Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中更新文件行_Python - Fatal编程技术网

如何在python中更新文件行

如何在python中更新文件行,python,Python,如何在Python中更新现有的文件行 示例:我想将session.xml更新为sesion config.xml,而无需写新行 输入A.txt: fix-config = session.xml fix-config = session-config.xml 预期输出A.txt: fix-config = session.xml fix-config = session-config.xml 你不能在文本文件中改变行-你必须写一个全新的行,如果不是在文件的末尾,就需要重写所有其他的行 最

如何在Python中更新现有的文件行

示例:我想将
session.xml
更新为
sesion config.xml
,而无需写新行

输入
A.txt

fix-config = session.xml
fix-config = session-config.xml
预期输出
A.txt

fix-config = session.xml
fix-config = session-config.xml

你不能在文本文件中改变行-你必须写一个全新的行,如果不是在文件的末尾,就需要重写所有其他的行

最简单的方法是将文件存储在列表中,对其进行处理,然后创建一个新文件:

with open('A.txt') as f:
    l = list(f)

with open('A.txt', 'w') as output:
    for line in l:
        if line.startswith('fix-config'):
            output.write('fix-config = session-config.xml\n')
        else:
            output.write(line)

@TigerhawkT3建议的解决方案非常适合中小型文件。 对于非常大的文件,可能无法将整个文件加载到内存中,然后需要分别处理每一行。 按照这些思路应该可以做到:

import shutil

with open('A.txt') as input_file:
    with open('temp.txt', 'w') as temp_file:
        for l in input_file:
            if l.startswith('fix-config'):
                temp_file.write('fix-config = session-config.xml\n')
            else:
                temp_file.write(l)

shutil.move('temp.txt', 'A.txt')

您是要覆盖一行还是覆盖整个文件?可能的重复项此问题有一个完全重复项。你觉得怎么样?如果你看到一个常见的问题和一个流行的规范副本,你可以用这个副本投票或标记该问题以结束。@Jarvis-这些都是非常熟悉的词:P