文件处理

什么是文件?
操作系统提供给用户操作复杂硬件(硬盘)的简易的接口

为什么操作文件?
人或者应用程序需要永久的保存数据

如何用?
f = open()
f.read()
f.close()

文件打开的模式
r 只读模式
w 只写模式
a 追加写模式
操作文件单位的方式
t 文本文件 t在使用的时候需要指定encoding参数 如果不知道默认是操作系统的默认编码
b 二进制 一定不能指定encoding参数

mode参数 可以不写 不写的话默认是rt 只读的文本文件 这个t不写默认就是t
with open(r'D:\Python项目\day07\a.txt',mode='r',encoding='utf-8') as f:
print(f.readable()) # 是否可读
print(f.writable()) # 是否可写
print(f.read()) # 一次性将文件内容全部读出

with open(r'D:\Python项目\day07\1.jpeg',mode='rb') 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模式: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')

万般皆下品,唯有读书高!
原文地址:https://www.cnblogs.com/s686zhou/p/11139132.html