文件的相关操作
r+
即可读又可写,r+是在后面追加
with open('text','r',encoding='utf8') as fr:
data=fr.read()
print(fr.writable)
fr.write('x=10')
print(data)
w+
清空文件的功能是w提供的
with open('text','w+',encoding='utf8')as fr:
print(fr.readable())
data=fr.read()
print(data)
a+
a+有追加的功能,a的指针在末尾,a+功能也没用
with open('text','a',encoding='utf8')as fr:
data=fr.read()
print(data)
fr.write('x=10')
fr.flush()
指针的应用:移动指针
文件的内置方法
seek(按字节位移动)
with open('text','rb')as fr:
fr.seek(1) #1表示位移1位,默认从文件头开始
fr.seek(1,0)#1表示偏移1位,0表示从头开始
fr.seek(2,1)#1表示偏移1位,1表示从当前位置开始
fr.seek(0,2)#0表示偏移0位,2表示文件末开始,把指针移动到文件末
文件修改的两种方式
方式一:
import os
with open('text') as fr,\
open('text1','w')as fw:
data=fr.read() #全部读入内存
data=data.replace('lzs','lll')
fw.write(data) ##新文件一次性写入原文件
#删除原文件
os.remove('text')
#重命名新文件名为原文件名
os.rename('text1','text')
方式二:
将硬盘存放的该文件的内容一行一行的读入内存,修改完毕后读入新程序
import os
with open('text','r',encodinf='utf8')as fr,\
open('text1','w',encoding='utf8')as fw:
for line in fr:
line=line.replace('lzs','lll')
fw.write(line)
os.remove('text')
os.rename('text1','text')
总而言之,修改文件内容的思路为:以读的方式打开原文件,以写的方式打开一个新的文件,把原文件的内容进行修改,然后写入新文件,之后利用os模块的方法,把原文件删除,重命名新文件为原文件名,达到以假乱真的目的。
既然选择了远方,只能风雨兼程