1. 初识⽂文件操作 2. 只读(r, rb) 3. 只写(w, wb) 4. 追加(a, ab) 5. r+读写 6. w+写读 7. a+写读(追加写读) 8. 其他操作⽅方法 9. ⽂文件的修改以及另⼀一种打开⽂文件句句柄的⽅方式
2 只读操作(r, rb)
需要注意encoding表⽰示编码集. 根据⽂文件的实际保存编码进⾏行行获取数据, 对于我们⽽而⾔言. 更更 多的是utf-8. rb. 读取出来的数据是bytes类型, 在rb模式下. 不能选择encoding字符集.
f = open("护⼠士少妇嫩模.txt",mode="r", encoding="utf-8") content = f.read() print(content) f.close(
rb的作⽤用: 在读取⾮非⽂文本⽂文件的时候. ⽐比如读取MP3. 图像. 视频等信息的时候就需要⽤用到 rb. 因为这种数据是没办法直接显⽰示出来的. 在后⾯面我们⽂文件上传下载的时候还会⽤用到. 还有.
我们看的直播. 实际上都是这种数据.
f = open("护⼠士少妇嫩模.txt",mode="rb" ) content = f.read() print(content) f.close() 结果: b'\xe6\xaf\x85\xe5\x93\xa5, \xe5\xa4\xaa\xe7\x99\xbd, wuse\n\xe5\x91\xb5\xe5\x91\xb5\n\xe6\x97\xa5\xe5\xa4\xa9'
3 绝对路径和相对路径:
1. 绝对路路径:从磁盘根⽬目录开始⼀一直到⽂文件名.
2. 相对路路径:同⼀一个⽂文件夹下的⽂文件. 相对于当前这个程序所在的⽂文件夹⽽而⾔言. 如果在同 ⼀一个⽂文件夹中. 则相对路路径就是这个⽂文件名. 如果在上⼀一层⽂文件夹. 则要.返回上层文件然后在进入
3 readline() ⼀一次读取⼀一⾏行行数据, 注意: readline()结尾, 注意每次读取出来的数据都会有⼀一 个\n 所以呢. 需要我们使⽤用strip()⽅方法来去掉\n或者空格
4. readlines()将每⼀一⾏行行形成⼀一个元素, 放到⼀一个列列表中. 将所有的内容都读取出来. 所以 也是. 容易易出现内存崩溃的问题.不推荐使⽤用
f = open("../def/哇擦.txt", mode="r", encoding="utf-8") lst = f.readlines() print(lst) for line in lst: print(line.strip())
5. 读写模式(r+, r+b) 对于读写模式. 必须是先读. 因为默认光标是在开头的. 准备读取的. 当读完了了之后再进⾏行行 写入. 我们以后使⽤用频率最⾼高的模式就是r+
所以记住: r+模式下. 必须是先读取. 然后再写入
6 写读(w+, w+b) 先将所有的内容清空. 然后写入. 最后读取. 但是读取的内容是空的, 不常⽤用
有⼈人会说. 先读不就好了了么? 错. w+ 模式下, ⼀一开始读取不到数据. 然后写的时候再将原来的内容清空. 所以, 很少⽤用.
7追加读(a+) a+模式下, 不论先读还是后读. 都是读取不到数据
8. seek(n) 光标移动到n位置, 注意, 移动的单位是byte. 所以如果是UTF-8的中⽂文部分要 是3的倍数. 通常我们使⽤用seek都是移动到开头或者结尾. 移动到开头: seek(0) 移动到结尾: seek(0,2) seek的第⼆二个参数表⽰示的是从哪个位置进⾏行行偏移, 默认是0, 表 ⽰示开头, 1表⽰示当前位置, 2表⽰示结尾
2. tell() 使⽤用tell()可以帮我们获取到当前光标在什什么位置
3. truncate() 截断⽂文件
注: 深坑请注意: 在r+模式下. 如果读取了了内容. 不论读取内容多少. 光标显⽰示的是多少. 再写入 或者操作⽂文件的时候都是在结尾进⾏行行的操作. 所以如果想做截断操作. 记住了了. 要先挪动光标. 挪动到你想要截断的位置. 然后再进⾏行行截断 关于truncate(n), 如果给出了了n. 则从开头开头进⾏行行截断, 如果不给n, 则从当前位置截断. 后⾯面 的内容将会被删除
9 修改⽂文件以及另⼀一种打开⽂文件的⽅方式 ⽂文件修改: 只能将⽂文件中的内容读取到内存中, 将信息修改完毕, 然后将源⽂文件删除, 将新 ⽂文件的名字改成老⽂文件的名字.
来源:https://www.cnblogs.com/daien522556/p/9157216.html