Python 编辑包含特定字符的行

Python edit line containing specific characters

我想知道是否有办法编辑文件中包含特定字符的那些行。 像这样:

file.readlines()
for line in file:
    if 'characters' in line:
       file[line] = 'edited line'

如果重要的话:我正在使用 python 3.5

我想你想要的是这样的:

lines = file.readlines()
for index, line in enumerate(lines):
    if 'characters' in line:
        lines[index] = 'edited line'

您不能直接编辑该文件,但您可以写出修改后的 lines 覆盖原始文件(或者,更安全的是,写入临时文件并在验证后重命名)。

您可以使用 tempfile.NamedTemporaryFile 创建一个临时文件对象并在其中写入行,使用 shutil 模块将临时文件替换为您之前的文件。

from tempfile import NamedTemporaryFile
import shutil

tempfile = NamedTemporaryFile(delete=False)
with open(file_name) as infile,tempfile:
    for line in infile:
        if 'characters' in line:
            tempfile.write('edited line')
        else:
            tempfile.write(line)

shutil.move(tempfile.name, file_name)