2016-11-29 63 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