2013-12-22 35 views
2

我想要做的是每次通過tkinter按鈕調用函數AppViewer_SAVE時,打開文件並寫入數據。我的問題是每個函數被調用,並寫入的時候,它不會寫入到一個新行,它只是將覆蓋是在第一行,繼承人的代碼數據:Python文件 - 每次打開時寫入新行

def Appviewer_SAVE(self): 
    target = open("saved", "w+") 
    target.write("%s\t" % App_InfoTrans0()) 
    target.write("%s\t" % App_InfoTrans1()) 
    target.write("%s\n" % App_InfoTransfer_Gender) #\n doesn't make a difference here 
    target.close() 

回答

3

更改您的代碼:

def Appviewer_SAVE(self): 
    target = open("saved", "a") 
    target.write("%s\t" % App_InfoTrans0()) 
    target.write("%s\t" % App_InfoTrans1()) 
    target.write("%s\n" % App_InfoTransfer_Gender) #\n doesn't make a difference here 
    target.close() 

'W +' 模式:

打開兩個寫入和讀取的文件。如果文件存在,則覆蓋現有的 文件。如果該文件不存在,則創建一個用於讀取和寫入的新文件 。

'A' 模式:

打開文件進行追加。如果文件存在,則文件指針位於 文件的末尾。也就是說,該文件處於追加模式。如果 該文件不存在,它將創建一個新文件進行寫入。

您可以通過查看文件的所有模式,在這個link

+0

謝謝!我從來不知道文件有追加..猜我應該去了解更多關於文件 – user2993584

+0

試圖接受答案,讓我先等幾分鐘。我會盡快接受 – user2993584

1

你想要麼打開追加模式的文件,

open(filename, 'a') 

雖然追加模式有時也有一些特定於平臺的差異在行爲中,所以另一種選擇是以寫入模式打開並手動尋找到結尾

f = open(filename, 'w') 
f.seek(0, os.SEEK_END) 

將來,請檢查open的Python文檔。它明確指出 「(注意'w +'截斷文件)」。如果您正在使用Python 3,請確保明確引用您正在使用的Python版本的文檔,因爲open()接受的一些模式和參數是不同的。

相關問題