我注意到這種奇怪的行爲在python-我試圖記錄一個進程的輸出,然後讀取這個輸出,並對它做一些處理。即使該文件在程序運行後打開時也具有所有文本,但我無法讀取任何內容。奇怪的IO行爲與子進程
它的那樣簡單
f=open("blah.txt",'w')
#I log the output of a program with subprocess
Cmdline="program.exe"
Dump= subprocess.Popen(CmdLine,stdout=f,stderr=subprocess.STDOUT)
#Waiting for it to finish
while(Dump.poll() is not None): #returns None while subprocess is running
print "waiting on process to finish \n"
f.flush() #I flush everything to make sure it was written
sys.stdout.flush()
f.close()
#now i need to read from this file
f= open("blah.txt", 'r')
line=f.readline()
while line:
print line
line=f.readline()
f.close()
我看了絕對沒問題,但是當我運行該程序後打開文件blah.txt,一切都在那裏。任何暗示我可能做錯了什麼?從「等待過程到完成」我沒有得到任何印刷品,但該過程需要一秒左右的時間才能完成。
什麼是'f'?不應該是'f = open(...'? – Blender 2013-03-26 00:04:15
對不起,錯字,修正。這不是我的程序中的問題。 – Illusionist 2013-03-26 00:04:50
@Illusionist有很多地方需要顯示這不是程序你正在運行,請儘可能少地修改[* actual * program](http://sscce.org/),否則錯誤可能在其他地方。例如,[此演示程序](https ://gist.github.com/phihag/5242061)在我的系統上工作正常 – phihag 2013-03-26 00:10:08