python_文件操作
文件打开方式
一种是读模式,一种是写模式,一种是追加模式
open('a.txt',r) 读模式,只能读,不能写,打开不存在的文件会报错
open('a.txt',w) 写模式,只能写不能读,会覆盖文件以前的内容,文件不存在的会创建
open('a.txt',a) 追加模式,在原来文件的内容上增加新内容,文件不存在的会创建,只能写不能读
open('a.txt',r+) 读写模式,写的时候直接从0的位置开始写,会把原来的值清除
open('a.txt',w+) 写读模式 写的时候直接从0的位置开始写,会把原来的值清除
open('a.txt',a+) 追加读模式
总结:
1、只要是r有关,打开不存在的文件都会报错。
2、只要和w有关,都会清空原来的文件
3、a+文件指针默认是在末尾的,如果想读到内容,先要把文件指针移动到最前面
一、文件读取
文件读取后指针位置发生变化,如果重复读取,需要指针归0
f=open("a.txt","r",encoding="utf-8") print(f.read()) #读取全部 print("=================") f.seek(0) print(f.readline()) #读取下一行 print("=================") f.seek(0) print(f.readlines()) #读取全部并list返回 D:\study\python\test\venv\Scripts\python.exe D:/study/python/test/dd.py zhaozhao3,123456,2 zhaozhao1,1234567,3 zhaozhao2,123456,3 zhaozhao6,123456 ================= zhaozhao3,123456,2 ================= ['zhaozhao3,123456,2\n', 'zhaozhao1,1234567,3\n', 'zhaozhao2,123456,3\n', 'zhaozhao6,123456\n']
二、文件写操作
f=open("a.txt","w",encoding="utf-8") #擦除写模式 li=["sfjkf\n","slfjkf\n","sjlsjf\n"] f.writelines(li) #可传入list f.writelines("xiaoxiao\n") #可传入字符串 f.write("zhaozhao6,123456") #只可传入字符串 f.close() sfjkf slfjkf sjlsjf xiaoxiao zhaozhao6,123456
三、指针位置
seek:指针位置跳转
tell:获取当前指针位置
f=open("a.txt","a+",encoding="utf-8") #擦除写模式 f.seek(0) #指针位置归0 f.read() #读取文件,指针移动到结尾处 point=f.tell() #获取指针位置 f.seek(point) #跳到获取的指针位置 f.write("sfsfdf") #追加写 f.close() #关闭文件
四:其他操作
f=open("a.txt","a+",encoding="utf-8") #擦除写模式 f.seek(0) f.truncate() #文件清空 f.close() #关闭文件
五:文件with模式打开
with方式打开一个或多个文件的写法,另外with打开无需再用close进行关闭文件
with open("a.txt",encoding="utf-8") as f: f.read() with open ("a.txt",encoding="utf-8") as f ,open("b.txt",'a+',encoding="utf-8") as f2: f.read() f2.write("df")
六、文件的修改
文件的修改有2种方式,如下图:
import os #源文件读取到字符串中,修改后再写入源文件 with open("a.txt",'a+',encoding="utf-8") as f: f.seek(0) #指针归0 result=f.read() #读取文件内容到字符串 content=result.replace("xiao","da") #修改文件内容 f.seek(0) #指针归0 f.truncate() #清除文件内容 f.write(content) #把修改后的内容写入文件 #逐行修改,且一个文件读,另外一个文件写,写完后,源文件删除,新文件重新命名为源文件名称 f=open("a.txt",encoding="utf-8") f2=open("b.txt",'w',encoding="utf-8") for i in f: result=i.upper() #逐行文件内容改大写 f2.write(result) #逐行写入第二个文件 f.close() #关闭文件 f2.close() #关闭文件 os.remove("a.txt") #删除源文件 os.rename("b.txt","a.txt") #重新命名第二个文件
备注:打开文件如果带路径的建议加上r,防止路径字符转义
例如:f=open(r"c:/study/a.txt",encoding="utf-8")