[英]Python subprocess.Popen.wait(Popen) not redirecting output to file
[英]redirecting popen output to file in python
我已經看到很多答案,說stdout=file
將重定向到文件。 但是我有幾個疑問。
為什么>file
不起作用。
subprocess.Popen([SCRIPT, "R", ">", FILE, "2>", "/dev/null"])
這樣好嗎
with open(FILE,'w+') as f: subprocess.Popen([SCRIPT, stdout=f] f.close()
就我而言,我試圖在一個無限循環(不會停止)中運行腳本,並且還有其他一些進程在監視其輸出。
即使關閉f后,腳本是否仍在繼續寫入腳本。 如果是,它如何工作?
由於subprocess
不允許使用>
來重定向文檔中的輸出和錯誤消息,因此:
stdin
,stdout
和stderr
指定執行程序的標准輸入,標准輸出和標准錯誤文件句柄。 有效值為PIPE
,DEVNULL
,現有文件描述符(正整數),現有文件對象和None
。
PIPE
指示應創建到子級的新管道。DEVNULL
表示將使用特殊文件os.devnull
。 使用默認設置None
,將不會發生重定向。 子級的文件句柄將從父級繼承。另外,
stderr
可以是STDOUT
,這表示來自應用程序的stderr數據應捕獲到與stdout.
相同的文件句柄中stdout.
並且您應該使用以下代碼:
with open(FILE, 'w+') as f:
subprocess.Popen([SCRIPT, 'R'], stdout=f, stderr=subprocess.DEVNULL))
因為你使用with
,因此無需關閉文件。
我想你一定要努力
with open(FILE,'w+') as f:
subprocess.Popen([SCRIPT, stdout=f, stderr=f])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.