文件替换字符串的一个方法,一般方法是读然后重新写入文件,但是对于大文件来说这种操作不太理想,我们可以按位置修改指定位置的某个字符串,这样避免了全文件的读写,也避免内存的占用,
基本思路是,每一行每一行的读文件并查找特征字符串,然后用file.seek() 方法将读写的位置指定到需要修改处然后写入目标字符串。
用到的知识点,读文件
读文件的模式有很多种不一一列举,r+表示打开一个文件用于读写。文件指针将会放在文件的开头。
def readFile(path):
with open(path,"r+") as f:
for line in f:
print(line)
f.close()
print("读文件完成")
path="D:\\tmp\\manim\\file\\1.txt"
readFile(path)
#文件路径,原字符串,要替换成的目标字符串
def replaceText(filePath,sourceText,targetText):
if(len(sourceText)!=len(targetText)):
raise Exception("原始字符串长度与目标字符串不符,容易覆盖有用信息", sourceText,targetText)
with open(filePath,'r+') as f:
line=f.readline()
index=0
# 遇到中间空行的可以自行观察并不是空字符串
while ( line!=""):
print(line)
# 本行内字符串所在位置
windex=line.find(sourceText)
if(windex!=-1):
print("windex={}".format(windex))
print("当前位置:{},替换内容起点:{}".format(f.tell(),index+windex))
f.seek(index+windex)
f.write(targetText)
# f.flush()
f.seek(index)
# 返回当前文件指针,应该是新一行的开始位置
index=f.tell()
line=f.readline()
f.close()
print("文件修改完毕")