python文件操作
一、初识文件操作
1.文件操作有几种(r,w,a,rb,wb,r+.w+)默认适用的是只读模式。
二、只读操作(r,rb)
1.read() 将文件中的内容全部读取出来. 弊端: 占内存. 如果文件过大.容易导致内存崩溃
f=open('文件名','r',encoding='utf-8')#文件和代码在一个路径,相对路径 a=f.read() f.flush() f.close() print(a)
f = open("../def/哇擦.txt", mode="r", encoding="utf-8")#循环读取. 这种方式是最好的. 每次读取一⾏内容.不会产⽣内存溢出的问题.
for line in f:
print(line.strip())
2.(rb的作⽤: 在读取非文本文件的时候. 比如读取MP3. 图像. 视频等信息的时候就需要⽤到rb. 因为这种数据是没办法直接显示出来的. 在后⾯面我们文件上传下载的时候还会用到)
f=open('文件名','rb')#bytes类型 a=f.read() f.flush() f.close() print(a)
三、写入文件(w,wb)
1.写的时候注意. 如果没有文件. 则会创文件, 如果文件存在. 则将原件中原来的内容删除, 再写入新内容
f = open("⼩小娃娃", mode="w", encoding="utf-8") f.write("⾦金金⽑毛狮王") f.flush() # 刷新. 养成好习惯 f.close()
四、追加
1.在追加模式下. 我们写入的内容会追加在⽂文件的结尾.
f = open("⼩小娃娃", mode="a", encoding="utf-8") f.write("麻花藤的最爱") f.flush() f.close()
五、读写模式
1.对于读写模式. 必须是先读. 因为默认光标是在开头的. 准备读取的. 当读完了了之后再进行
写入. 我们以后使用频率最高的模式就是r+。
f = open("⼩小娃娃", mode="r+",encoding='utf-8') s=f.read() print(s) f.write("看见") f.flush() f.close()
六、其他操作
1. seek(n) 光标移动到n位置, 注意, 移动的单位是byte. 所以如果是UTF-8的中文部分要
是3的倍数.
移动到开头: seek(0)
移动到结尾: seek(0,2) seek的第⼆二个参数表⽰示的是从哪个位置进行偏移, 默认是0, 表
示开头, 1表示当前位置, 2表示结尾。
f = open("⼩小娃娃", mode="r+", encoding="utf-8") f.seek(0) # 光标移动到开头 content = f.read() # 读取内容, 此时光标移动到结尾 print(content) f.seek(0) # 再次将光标移动到开头 f.seek(0, 2) # 将光标移动到结尾 content2 = f.read() # 读取内容. 什什么都没有 print(content2) f.seek(0) # 移动到开头 f.write("张国荣") # 写⼊入信息. 此时光标在9 中⽂文3 * 3个 = 9 f.flush() f.close()
七、修改文件以及打开文件的另一种方式
import os with open("⼩小娃娃", mode="r", encoding="utf-8") as f1, open("⼩小娃娃_new", mode="w", encoding="UTF-8") as f2: for line in f1: new_line = line.replace("⼤大⽩白梨梨", "冰糖葫芦") f2.write(new_line) os.remove("⼩小娃娃") # 删除源⽂文件 os.rename("⼩小娃娃_new", "⼩小娃娃") # 重命名新⽂文件