2016-11-29 64 views
1

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

例如:我想更新session.xmlsesion-config.xml而不写新行。

输入A.txt

fix-config = session.xml 

预计输出A.txt

fix-config = session-config.xml 
+0

你想重写一行或重写整个文件? –

+1

[在Python中搜索并替换文件中的一行]的可能重复(http://stackoverflow.com/questions/39086/search-and-re-place-a-line-in-a-file-in-python) –

回答

0

该解决方案@ 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') 
3

不能突变在一个文本文件行 - 你必须写一个全新的线路,其中,如果不是一个文件的结尾,需要重写其余的部分。

要做到这一点,最简单的方法是将文件存储在一个列表中,对它进行处理,并创建一个新的文件:

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) 
+1

有这个问题的确切副本[这里](http://stackoverflow.com/questions/39086/search-and-replace-a-line-in-a-file-in-python)。你怎么看? –

+0

如果您看到流行的规范副本的常见问题,您可以对该问题进行投票或将问题标记为关闭。 – Jarvis

+1

@贾维斯 - 这些都是真正熟悉的单词。 :P – TigerhawkT3