Python替换文件里的文本

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

使用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?

版权声明:著作权归作者所有。

相关推荐

Linux使用iconv转换文本的字符编码

iconv转换文本的字符串编码:iconv -f UTF-8 -t ISO-8859-1 in.txt > out.txt 其中:-f:指出源文件的字符编码-t:指定目标文件的字符编码in.txt为输入文件,out.txt目标输出文件。

Linux使用grep查找文本所在的所有文件

显示所在文件及匹配到的文本grep -rin 'search' /path/  -r/-R:递归遍历目录-i:忽略大小写-n:显示出现在文件的行号仅显示所在文件grep -ril 'search' /path/ -l:显示所在的文件,而不是匹配到的文本包含/排除目录可以使用--exclude, --include, --excl

Python里的raw_input()和input()的区别

Python2raw_input():接收用户输入,并以字符串的形式返回用户的输入。input(): 接收用户输入的python表达式,在内部对表达式执行eval()。Python3raw_input()重命名为input(),接收用户输入,并以字符串返回。在Python2里执行python表达式的input()已删除。如果要在Python3里实现Python2 input()

Python判断文件是否存在的方法

方法一使用os.path.exists判断路径是否存在,包括文件夹和文件。import os.path os.path.exists(my_file) 方法二使用os.path.isfile检查路径是否为文件,如果文件存在返回True。import os.path os.path.isfile(my_file)  方法三面向对象文件系统路径操作包pathlib2,pa