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:studypython	estvenvScriptspython.exe D:/study/python/test/dd.py
zhaozhao3,123456,2
zhaozhao1,1234567,3
zhaozhao2,123456,3
zhaozhao6,123456

=================
zhaozhao3,123456,2

=================
['zhaozhao3,123456,2
', 'zhaozhao1,1234567,3
', 'zhaozhao2,123456,3
', 'zhaozhao6,123456
'] 

二、文件写操作

f=open("a.txt","w",encoding="utf-8") #擦除写模式
li=["sfjkf
","slfjkf
","sjlsjf
"]
f.writelines(li) #可传入list
f.writelines("xiaoxiao
") #可传入字符串
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")

原文地址:https://www.cnblogs.com/xiaokuangnvhai/p/10945594.html