03_02、文件处理
一、文件的基本操作
1. 什么是文件?
操作系统暴露给用户操作硬盘的接口
2.代码如何操作文件?
1、三步骤:
1. 使用open打开文件
2. 使用相关方法操作文件
3. 关闭文件
2、扩展补充
路径:
相对路径
绝对路径
当路径写成绝对路径时候,路径中有斜杠出现时候,在路径前面加个r
r'E:\python21\day10\a.txt'
3、文件打开简便方法
with上下文管理器
二、控制文件读写的操作模式
1. r: 读取模式
路径不存在,会报错
路径存在直接读取,但不能向文件中写内容
2. w: 写入模式
如果路径不存在:
会创建出来一个新的路径
如果路径存在:
1. 会把文件内容清空
2. 在执行写操作
3. a: 追加模式
如果路径不存在:
会创建出来一个新的路径
如果路径存在:
在文件末尾添加新内容
4、+模式
r+ w+ a+ :可读可写
在平时工作中,我们只单纯使用r/w/a,要么只读,要么只写,一般不用可读可写的模式
三、控制文件读写内容的模式
1、t模式:文本模式
1、t 模式:
前文我们指定的文件打开模式 r w a,其实默认就是rt wt at
2、注意:
1. 文件中的内容全部都是以字符串为单位
2. 写入的内容只能是字符串
3. 必须指定encoding参数
3、原因:
t 模式只能用于操作文本文件,无论读写,都应该以字符串为单位,而存取硬盘本质都是二进制的形式,当指定 t 模式时,内部帮我们做了编码与解码
2、b模式:二进制模式
1、b模式:
rb wb ab
2、注意:
1. 文件中的内容都以字节(bytes)为单位
2. 写入的内容必须是二进制
3. 一定不能指定encoding参数
3、原因:
1、相比于t模式在操作纯文本文件方面t模式帮我们省去了编码与解码的环节,b模式则需要手动编码与解码,所以此时t模式更为方便
2、针对非文本文件(如图片、视频、音频等)只能使用b模式,换句话说b模式能执行所有的数据类型
四、操作文件的方法
1. 读相关的方法
1、读操作
f.read() # 读取所有内容,执行完该操作后,文件指针会移动到文件末尾
f.readline() # 读取一行内容,光标移动到第二行首部
f.readlines() # 读取每一行内容,存放于列表中
2、注意:
f.read()与f.readlines()都是将内容一次性读入内容,如果内容过大会导致内存溢出,若还想将内容全读入内存,则必须分多次读入,有两种实现方式:
1.方式一
with open('a.txt',mode='rt',encoding='utf-8') as f:
for line in f:
print(line) # 同一时刻只读入一行内容到内存中
2.方式二
with open('1.mp4',mode='rb') as f:
while True:
data=f.read(1024) # 同一时刻只读入1024个Bytes到内存中
if len(data) == 0:
break
print(data)

2、写相关操作
f.write('1111\n222\n') # 针对文本模式的写,需要自己写换行符
f.write('1111\n222\n'.encode('utf-8')) # 针对b模式的写,需要自己写换行符
f.writelines(['333\n','444\n']) # 文本模式
f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式
3. 其他相关方法
f.readable() # 文件是否可读
f.writable() # 文件是否可读
f.closed # 文件是否关闭
f.encoding # 如果文件打开模式为b,则没有该属性
f.flush() # 立刻将文件内容从内存刷到硬盘
f.name
五、文件中控制光标的移动
1、不同模式下指针移动的单位
在b模式下的read(n),文件内指针的移动n以字节为单位
在t模式下的read(n),文件内指针的移动n以字符为单位
2、f.seek主动控制文件内指针的移动
1、f.seek(offset,whence):
offset:指针移动的字节数
whence:模式控制
之前文件内指针的移动都是由读/写操作而被动触发的,若想读取文件某一特定位置的数据,则需要用f.seek方法主动控制文件内指针的移动
2、模式控制:
0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的
1: 该模式代表指针移动的字节数是以当前所在的位置为参照的
2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的
强调:其中0模式可以在t或者b模式使用,而1跟2模式只能在b模式下用
3、f.tell():
查看光标当前位置
六、修改文件内容
1、光标指定位置,'r + w’可读可写模式修改文件
2、repalce修改
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通