2012-05-17 33 views
32

我已經創建了一個使用python的文本文件,可以通過簡單的程序讀取一個txt文件。但是,我在重新打開該文件並在該程序的後面部分在文件中寫入其他行時遇到了一些問題。 (該線將來自獲得以後的用戶輸入被寫入。)如何使用python添加行到現有文件中

with open('file.txt', 'w') as file: 
    file.write('input') 

這是假設「file.txt的」已被打開之前和寫入,在打開該第二時間然而,與代碼我現在有,我必須擦除之前編寫的所有內容並重寫新行。有沒有辦法防止這種情況發生(並可能減少打開文件的過多代碼)?

+5

待辦事項不要使用「文件」作爲變量名稱,因爲它會映射內置文件類型 – Fabian

回答

37

如果要附加到文件,請使用'a'打開它。如果您想查找文件以找到您應該插入該行的位置,請使用'r+'。 (docs

31

打開文件'append'而不是'write'。

with open('file.txt', 'a') as file: 
    file.write('input') 
+11

注意!這不會添加換行符。如果你需要添加一行到文本文件(而不是一個行片段),用'\ n'結束數據,例如:'file.write('input \ n')' –

9

使用'a''a'意味着append。寫入文件的任何內容都會在文件末尾寫入,該文件用'a'屬性打開。上述

with open('file.txt', 'a') as file: 
    file.write('input') 
6

的答案是正確的,但將數據追加爲新的生產線,而不是套結它到文件的最後一行的末尾,使用以下命令:

with open('file.txt', 'a') as file: 
    file.writelines('input') 
+0

這實際上是不正確的。 'file.write(arg)'將'arg'寫入文件。 'file.writelines(arg)'將'arg'的所有元素(例如,一個字符串或者列表中的項目的字符)寫入文件_without_ _any_ _separators_。在這個例子中,他們都做同樣的事情。請參閱https://docs.python.org/3/library/io.html。每當你寫文件時,你必須自己添加行結尾。 –

相關問題