常见的3种操作模式,r、w、a
#file in 2.X # file mode r = read ,w = write , a = append # r 模式 就是打开一个文件,只能读不能写 print(open("lyric").read()) data = open("lyric").read() print(data.replace("Somehow","HAHAHAHA")) #写入失败 # w 模式 意味着创建一个文件,旧文件会被覆盖 f = open("lyric", mode="w") data = f.read() data = data.replace("Somehow","HAHAHAHA") print(data) f.write(data) #以上操作会将文件中所有内容覆盖 f.write("What happend...") #重新写入数据 f.write("What happend...") f.write("What happend...") # a 模式 以追加的形式打开文件,会写在文件最后 f = open("lyric", mode="a") f.write(" What happend...") f.close()
修改文件:
# @1 方式 #先打开改掉内容之后再关闭 f = open("lyric",mode="r",encoding="utf-8") data = f.read() data = data.replace("Somehow","HAHA") f.close() #再以覆盖的模式打开再写入 f = open("lyric",mode="w",encoding="utf-8") f.write(data) f.close() 弊端:占用内存 # @2 方式 import os f = open("lyric",mode="r",encoding="utf-8") f_new = open("lyric_new",mode="w",encoding="utf-8") #循环读,如果遇到则修改;最后写入到一个新文件中 for line in f: if "Somehow" in line: line = line.replace("Somehow","HAHAHA") f_new.write(line) f.close() f_new.close() os.remove("lyric") #删除原文件 os.rename("lyric_new","lyric") #重命名新文件 弊端:占用硬盘
其他操作:
#r+ 模式 追加+读,可以定长修改 f = open("lyric","r+",encoding="utf-8") #encoding如果不声明,默认使用操作系统的编码来解释文件 print(f.read()) f.write("---------test") f.close() #w+ 模式 写+读,清空原文件再写入新文件 f = open("lyric","w+",encoding="utf-8") print(f.read()) f.write("---------test") f.close() #小技巧 f = open("lyric","r",encoding="utf-8") print('cursor:',f.tell()) #打印光标,输出的数字是第n个字符 f.seek(10) #移动10个光标(字节) f.read(6) #读取6个字符 f.flush() #将写入内存的数据写入硬盘 f.close() #a+ 模式 追加+读 #rb 模式 以二进制模式打开文件,不能声明encoding #wb 模式 以二进制写入文件,必须写入bytes格式,需要encoding