最新要闻

广告

手机

2023年中国光学膜产业链上中下游市场分析(附产业链全景图)

2023年中国光学膜产业链上中下游市场分析(附产业链全景图)

周末不出城 也可赏苇打卡健身

周末不出城 也可赏苇打卡健身

家电

文件知识点总结

来源:博客园

一:打开、关闭文件


【资料图】

1.打开文件:f=open("文件路径","模式")2.操作:写入、读取、修改===》模式3.关闭:f.close() ====》释放内存空间

例1:读取文件

# 1.打开文件f=open("file01.txt","r") # 文件对象  # mode="r"(默认模式为r) ===》如果是r+表示可读不写print(f)# 2.读取文件print(f.read())  # read()
# 3.关闭f.close()

运行截图:

例2:写入

# w+ 可读可写f=open("file012.txt","w+") # 文件对象# 写入:只可以写字符串,写入之后会覆盖原有的内容f.write("123eeex\n3432fp\n")

例3:

f=open("file04.txt","a+") #追加# f=open("file01.txt","ab+") # 加个b的作用:以二进制的格式打开文件,进行上述操作# f2=open("file01.txt","r+") #追加f.write("yod3")f.flush()# f.write("wee")#f.writelines([1,2,3]) # TypeError: write() argument must be str, not intf.writelines(["1\n","5"]) # 写入多行(需要自己加换行符)# f.write(b"abc")f.seek(3)  # 移动光标print(f.read()) # 读取光标以后的内容# print(f2.readline())  # 读取一行# print(f2.readlines())  # 读取多行# li=f2.readlines()# print(li[0])  # 列表# f3=open("file01.txt","r+") #追加# f3.write("abc")# print(f3.tell())  # 获取游标的位置# f4=open("file01.txt","r+") #追加# f4.write("abc")# f4.flush() # 刷新缓存

二:StringIO与 BytesIO(了解)

import io# 字符串sio=io.StringIO() # 创建假文件(字符串对象)print(sio)  # <_io.StringIO object at 0x000001E120A40A68>sio.write("abcd4w") # 写入print(sio.getvalue()) # 读取print("-----------------------------")# 写入 二进制sioo=io.BytesIO()sioo.write(b"werty")print(sioo.getvalue())print(sioo.getvalue().decode("utf-8"))

运行截图: 

三:上下文管理

文件一般流程如下:

1.打开文件2.操作文件3.关闭文件如果把《操作文件部分》放在上下文管理方法中,无需每次都写打开、关闭文件
# 上下文管理class Test:        # 最开始调用    def __enter__(self):  # 自动调用这两个方法        #print("正在使用enter")        return  "enter 返回"    def __exit__(self, exc_type, exc_val, exc_tb): # 最后调用这个方法        print("z正在使用exit")# 上下文with Test() as t:    # print(t)  # enter 返回    print(t)

运行截图:

注意事项:

通过上下文管理无需手动再次写关闭操作,操作完成自动关闭释放内存空间(底层帮我们已经做了),这样写让代码更加简洁清晰明了!
# with 打开文件 as 别名  这样写不用手动关闭文件  (别名:可以当做是一个被赋值的变量)with open("file03.txt","w+") as f:    f.write("123")

操作多文件:  

with open("file03.txt","w+") as f,open("file01.txt","r") as f1:    f.write("123")  # f写入    print(f1.read()) # f1读出

必须掌握:with..as的用法和特点

四:os模块 的目录及文件操作

import osprint(os.getcwd())  # 显示当前路径  D:\py学习01\python基础\文件print(os.listdir())  # 展示当前目录内容print(os.listdir("D:\py学习01\python基础\文件"))  # 展示当前目录内容# 改变路径os.chdir("D:\py学习01\python基础\文件1") # 目录要有文件1print(os.getcwd())# 创建目录(文件夹)os.mkdir("file04.py")# 删除文件 # os.remove("file04.py") # file04.py是目录无法删除,应该删除的是目录下面的文件

运行截图:

os.path模块 的路径操作

# 路径拼接: os.path.join(path1,path2….)print(os.path.join("py学习01","python基础"))  # py学习01\python基础# 是否是目录: os.path.isdir  # 文件就是目录# 是否是文件: os.path.isfileprint(os.path.isdir("D:\py学习01\python基础\文件1"))  # True# 文件夹才是路径print(os.path.isdir("D:\py学习01\python基础\文件\file.py"))  # False#print(os.path.isfile("D:\py学习01\python基础\文件\文件01.py")) # Trueprint(os.path.isfile("D:\py学习01\python基础\文件"))  # False

运行截图:

练习:

1.写一个简单的复制文件代码"""思路:1.打开文件:open2.读取内容并保存在变量中:read3.写入另一个文件中:write"""
with open("file01.txt","r") as f,open("file03.txt","w") as f2:    a=f.read()    # print(a)    f2.write(a)  # 写入

2.写一个用来遍历某目录所有内容的函数

"""# 1.目录就是文件夹# 2.内容===》文件# 3.函数就是方法# 4.传一个路径,是文件就遍历,如果是目录继续进入目录"""
import osdef list_all(path):    list_path=os.listdir(path)    # 打印文件名    print(os.listdir(path))    """    ["04.py", "file.py", "file01.txt", "file012.txt", "file02.txt",     "file03.txt", "file04", "file04.py", "__init__.py", "文件01.py",     "文件02.py", "文件03.py", "文件04.py"]    """    for i in list_path:        # 目录与文件名拼接        full_path=os.path.join(path,i)        # 对拼接后的地址判断,如果是目录继续遍历,否则直接打印文件名        if os.path.isdir(full_path):            # 继续遍历            list_all(full_path)        else:            print(i)    # print(path)list_all("D:\py学习01\python基础\文件")

运行截图:

关键词: