Python替换文件里的文本

时间:2022-06-01 19:14:24

在原来的文件直接替换文本

使用fileinput在文件上直接替换:

#!/usr/bin/env python3
import fileinput

with fileinput.FileInput(fileToSearch, inplace=True, backup='.bak') as file:
    for line in file:
        print(line.replace(textToSearch, textToReplace), end='')

这种方法会把标准输出stdout重定向到文件。参数end=''是避免在文件末尾换行。

在缓存里替换

#读取文件内容到缓存里
with open('file.txt', 'r') as file :
  filedata = file.read()

# 替换目标字符串
filedata = filedata.replace('old_text', 'new_text')

# 重新把替换后的字符串写回文件里
with open('file.txt', 'w') as file:
  file.write(filedata)

这种方式不适合处理大文件,另外可以考虑把替换后的字符串写到新的文件里。

逐行读取,并替换

f1 = open('file1.txt', 'r')
f2 = open('file2.txt', 'w')
for line in f1:
    f2.write(line.replace('old_text', 'new_text'))
f1.close()
f2.close()

参考:How to search and replace text in a file using Python?