2012-11-16 479 views
3

我一直有這個麻煩了一段時間。如何在python中打開一個文件並繼續寫入它,但不覆蓋我以前寫過的文件?Python:寫入文件

例如:

下面的代碼會寫'輸出正常'。 那麼接下來的幾行將會覆蓋它,它只會被「完成」

但我想這兩個 「輸出OK」 文件

f = open('out.log', 'w+') 
f.write('output is ') 
# some work 
s = 'OK.' 
f.write(s) 
f.write('\n') 
f.flush() 
f.close() 
# some other work 
f = open('out.log', 'w+') 
f.write('done\n') 
f.flush() 
f.close() 

我想在「完成」 能夠間隔地自由打開和寫入。關閉它。然後反覆重複這個過程。

感謝您的幫助:D

回答

8

以追加模式打開文件。如果不存在,它將被創建,它將在其末尾再次寫入被打開,如果它存在:

with open('out.log', 'a') as f: 
    f.write('output is ') 
    # some work 
    s = 'OK.' 
    f.write(s) 
    f.write('\n') 

# some other work 
with open('out.log', 'a') as f: 
    f.write('done\n') 
+1

不要忘記,你可以做'打印>> F, 'done''只有 – Eric

+0

python2 :)爲python3:打印(' 完成」,文件= F) –

2

只是通過「A」作爲參數,當你打開它附加內容的文件。見doc

f = open('out.log', 'a') 
2

您需要打開該文件中追加模式,第二次:

f = open('out.log', 'a') 

因爲每次你打開了寫模式的文件時,文件的內容得到殲滅。

2

第一次寫入後,您需要使用f = open('out.log', 'a')附加到文件的內容中。

2
with open("test.txt", "a") as myfile: 
    myfile.write("appended text")