【问题标题】:Python edit line containing specific characters包含特定字符的 Python 编辑行
【发布时间】:2015-11-09 16:22:10
【问题描述】:

我想知道是否有一种方法可以编辑文件中包含某些字符的那些行。 像这样的:

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

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

【问题讨论】:

  • 你也可以在python中使用linecache模块。搜索一下,但我相信第一个答案会起作用。

标签: python python-3.x readlines


【解决方案1】:

我认为你想要的是这样的:

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

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

【讨论】:

  • 我按照你的建议做了,但它似乎没有正确检测到线路。我检查了一下,我正在寻找的字符串在文件中非常多,但它似乎没有给我一个改变的行。我在 if 语句中放置了 print 语句来检查它是否找到了字符,结果是它没有检测到字符。我添加了 else: print('Characters not found') 也没有执行。关于什么可能是错的任何线索?我的具体代码可以在这里找到:gyazo.com/529ec940d14e9915a237de670d89e178。这只是写了'0'行。
【解决方案2】:

您可以使用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)

【讨论】:

    猜你喜欢
    • 2021-07-20
    • 1970-01-01
    • 2021-12-26
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多