2013-08-04 28 views
7

我試圖做簡單的命令來的Hello World寫入文件:Python中寫入一個文件返回空文件

50 complexity:test% python2.7 
Python 2.7.3 (default, Feb 11 2013, 12:48:32) 
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> f=open("/export/home/vignesh/resres.txt","w") 
>>> f.write("hello world") 
>>> f.write("\t".join(["hello","world"])) 

這將返回一個空文件。

+4

你需要'f.close()'。學習'with'語句的時間。 –

+1

我不認爲這應該是downvoted。 OP向他充分解釋了他的問題,展示了他的代碼,並提出了一個真正的問題。僅僅因爲他對Python不熟悉並不是懲罰他的理由。 – iCodez

+1

@Keyser - 好吧,我想你可以這麼說。哦,現在這個問題對於他們研究中的任何未來的編碼者都是如此。 :) – iCodez

回答

11

Python將不刷新每個write後的文件。你要麼需要使用手動flush進行沖洗:用close

>>> f.flush() 

或關閉它自己:

>>> f.close() 

當使用一個真正的程序文件,建議使用with

with open('some file.txt', 'w') as f: 
    f.write('some text') 
    # ... 

這將確保該文件將被關閉,即使有異常拋出。如果你想在REPL工作,不過,你可能要堅持用手動關閉它,因爲它會盡量嘗試執行之前閱讀with的全部。

5

您需要關閉該文件:

>>> f.close() 

另外,我建議你使用with關鍵字用打開文件:

with open("/export/home/vignesh/resres.txt","w") as f: 
    f.write("hello world") 
    f.write("\t".join(["hello","world"])) 

它會自動關閉它們。