我可以在我的成功輸出重定向到一個文件,但是這似乎覆蓋該文件的現有數據:附加subprocess.Popen輸出到文件?
import subprocess
outfile = open('test','w') #same with "w" or "a" as opening mode
outfile.write('Hello')
subprocess.Popen('ls',stdout=outfile)
將刪除該文件的'Hello'
線。我猜想一個解決方法是將輸出存儲爲其他字符串或其他東西(它不會太長),並將其與outfile.write(thestring)
手動追加 - 但我想知道如果我在模塊中缺少一些便於使用的東西這個。
注意對上述職位:有些試驗後,似乎'subprocess.Popen'需要一個類似於stdout和stderr參數的文件,所以僅用'write'方法給它們一個自定義對象是不夠的。我試過了,但是'fileno'函數是必需的,而且我還不夠好在我自己的類中模擬這個函數。 –
我一直在試圖使用這種方法,但我發現,由於某種原因,每次我運行外部進程時都有一個我已經明確打開的文件來追加,進程的輸出從文件的開頭寫入並覆蓋那裏有任何信息。因此,要使用此解決方案,必須在打開文件後立即調用log.seek(0,os.SEEK_END)。 – Luke