文件操作
什么文件?
操作系统提供给用户操作复杂硬件(硬盘)的简易的接口
为什么操作文件
人或者应用程序需要永久的保存数据
文件的打开过程
- step1 点击需要打开的文件
- step2 操作系统接收到命令,将文件路径传送给CPU
- step3 CPU根据路径去硬盘中寻找文件,然后调取到内存中
- step4 操作系统将调取的文件显示出来,可进行读写保存等操作
文件打开的模式
r 只读模式
w 只写模式
a 追加写模式
操作文件单位的方式
t 文本文件 t在使用的时候需要指定encoding参数 如果不知道默认是操作系统的默认编码
b 二进制 (因为已经制定了用二进制模式)所以一定不能指定encoding参数mode参数
可以不写 不写的话默认是rt 只读的文本文件 这个t不写默认就是t
r模式
with open(r'D:\Python项目\day07\a.txt',mode='r',encoding='utf-8') as f: print(f.readable()) # 是否可读 print(f.writable()) # 是否可写 print(f.read()) # 一次性将文件内容全部读出
# r模式在打开文件的时候 如果文件不存在 直接报错# 文件路径可以写相对路径 但是需要注意该文件必须与执行文件在同一层文件下with open(r'a.txt',mode='r',encoding='utf-8') as f:with open(r'a.txt','r',encoding='utf-8') as f1: mode关键字可以不写 print(f.readable()) # 是否可读 print(f.writable()) # 是否可写 print(">>>1:") print(f.read()) # 一次性将文件内容全部读出 print('>>>2:') print(f.read()) # 读完一次之后 文件的光标已经在文件末尾了,再读就没有内容了可读 print(f.readlines()) # 返回的是一个列表 列表中的一个个元素对应的就是文件的一行行内容 for line in f: # f可以被for循环 每for循环依次 读一行内容 print(i) # 这个方法 就可以解决大文件一次性读取占用内存过高的问题 print(f.readline()) # 只读取文件一行内容 print(f.readline()) print(f.readline()) print(f.readline())
w模式(慎用)
# 1.文件不存在的情况下 自动创建该文件# 2.当文件存在的情况下 会先清空文件内容再写入with open(r'xxx.txt',mode='w',encoding='utf-8') as f: print(f.readable()) # 是否可读 print(f.writable()) # 是否可写 f.write('不不不,你没有翻~\n') f.write('不不不,你没有翻~\n') f.write('不不不,你没有翻~\n') f.write('不不不,你没有翻~\r') f.write('不不不,你没有翻~') l = ['不sdffs,sdfs有翻~\n','不sdfsdf不,你sdfsf翻~\n','不sfad不,你没sa翻~\n'] f.writelines(l) # 上下等价 for i in l: f.write(i)
a模式
# 1.当文件不存在的情况下 自动创建该文件# 2.当文件存在的情况下,不清空文件内容, 文件的光标会移动文件的最后with open(r'yyy.txt',mode='a',encoding='utf-8') as f: print(f.readable()) # 是否可读 print(f.writable()) # 是否可写 f.write('我是小尾巴\n')