2016-09-30 79 views
0

總之,什麼是在文檔我不能從構建明白蟒蛇的Tkinter tkFileDialog

tkFileDialog.asksaveasfile 

tkFileDialog.asksaveasfilename 

的區別

+0

學習編程需要一些實驗。你可以編寫一個執行每個函數的小程序,並且看看自己會發生什麼...... –

回答

4

asksaveasfile要求用戶輸入一個文件,然後以寫入模式打開該文件並將其返回給您,以便您可以在其中寫入。

asksaveasfilename向用戶詢問文件,然後返回該文件的名稱。沒有文件被打開;如果你想寫入文件,你必須自己打開它。

asksaveasfilename可能比asksaveasfile更受歡迎,如果您想對文件做一些更有趣的事情,那麼只需將數據寫入文件。例如,您可能需要先將該文件複製到另一個目錄作爲備份。在這種情況下,您更願意只獲取文件名,以便您可以執行副本,而不必擔心是否打開文件會導致副本失敗。

+0

其實我知道這兩個函數都會詢問用戶文件名,因爲我的要點是創建一個** new **文件。 (那麼爲什麼你說'爲用戶提供一個文件,就像現有文件一樣?「)。如果我想寫一個新文件到用戶磁盤,asksaveasfile應該是首選? – user3599803

+0

@ user3599803:Tkinter的'asksaveas ...'函數允許用戶選擇現有的文件,但如果他們這樣做,會彈出警告,詢問他們是否要覆蓋該文件。試試看! –

+0

@Kevin一旦文件以「w」模式打開,它已經被截斷了,所以如果你使用'asaveave文件',你就沒有機會備份它。 –

2

按照http://tkinter.unpythonic.net/維基:

類似:

首先,你必須決定是否要打開文件,或者只是想爲了打開的文件,以獲取文件名的擁有。在第一種情況下,您應該在後一種情況下使用tkFileDialog.askopenfile()tkFileDialog.askopenfilename()

則:

保存文件的工作以類似的方式。您還有兩個函數變體,一個用於獲取打開的文件,您可以使用該文件保存數據,另一個文件名用於打開文件。這些功能僅在單個文件版本中提供。多文件版本將沒有意義。

+0

我想寫一個新文件到用戶磁盤,對話框應該讓他保存在一個文件夾中 – user3599803