python的文件操作
1、应用程序直接操作的是文件,对文件进行的所有的操作,都是向操作系统发送系统调用,然后再由操作将其转换成具体的硬盘操作
2、控制文件的读写内容的模式:t和b
t文本(默认的模式):
- 读写都以str(unicode为单位)
- 文本文件
- 必须指定encoding='utf-8'
b(二进制/bytes)
3、
4、with...as...
会自动执行f.close()
注意:
必须加上encoding='utf-8'的编码(没有指定encoding参数操作系统会使用自己默认的编码,linux默认是utf-8,windows默认gbk)
内存:utf-8格式的二进制--解码--unicode
硬盘:(b.txt的内容,utf-8的二进制文件)
5、with open("b.txt",mode='rt',encoding='utf-8') as f:
r模式:只读模式,当文件不存在时报错,当文件存在时指针跳到开始的位置
f.read:把文件所有的内容从硬盘读入内存,读完之后指针会到末尾
w模式:只写模式,当文件不存在时创建空新文件,当文件存在会清空文件,指针再最开始的位置。
不能进行读操作 f.read
案例:a模式用于案例,w用于拷贝功能
+模式
x模式-文件不存在时新建,文件存在时报错,不可读可写
b模式-binary模式
1、读写都是以bytes为单位
2、可以针对所有文件
3、一定不能指定字符编码,即一定不能指定encoding
总结:
1、在操作纯文本文件方面t模式帮我们省去了编码和解码的环节,b模式则需要我们自己解码
2、针对非文本文件(如图片,视频,音频等)只能使用b模式
6、循环读取文件,防止内存占用过大
1、自己控制每次读取的数据的数据量,t模式下,read(n),n代表的是字符个数。但是r模式下,n代表的是字节个数。
2、读出来为bytes类型,以行为单位读,当一行内容过长时也可能会导致一次性读入内容的数据量过大
3、writeline
5、字节编码的三种方式
''.encoding('utf-8'),
bytes()
b'aaa'这种方式只适合于纯英文字符
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通