[英]Getting the output of a python subprocess
我試圖在這里捕獲 output。 如果在 python 提示符下,我運行
p = subprocess.Popen(["/path/to/search_by_hash.par", hash_str],
stdout=subprocess.PIPE)
返回值(列表)打印到標准輸出,但未被捕獲
[4460475, 4406612, 4379510]
我試過跟進
value = p.communicate()[0]
value
..但是值是一個空字符串,而不是我期望的整數列表,並且正在打印到標准輸出
我嘗試了來自Store output 的解決方案。在字符串中調用 Popen,但無法捕獲 output。
更新:
stderr 似乎也沒有產生任何東西......我正在尋找的列表正在打印出來......只是沒有任何運氣來捕捉它。 見下文:
>>> p = subprocess.Popen(["/home/jfry/tools/search_by_hash.par", hash_str],
stdout=subprocess.PIPE)
>>>
[4460475, 4406612, 4379510]
value, err = p.communicate()
>>> value
''
>>> err
謝謝!
嘗試使用p.communicate()[1]
檢查stderr
。
因為接受的答案並不能解決問題(至少對我而言):
要捕獲stderr
-輸出,應執行以下操作:
import subprocess
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = p.communicate()
關鍵部分是參數stderr=subprocess.PIPE
,沒有這個參數, stderr
-output 將不會被捕獲並且err
將為None
。
如果您只對stderr
-輸出感興趣,您實際上可以使用:
p = subprocess.Popen(command, stderr=subprocess.PIPE)
err = p.communicate()[1]
在這種情況下p.communicate()[0]
是None
。
溝通是一種方法。 所以你應該打電話!
out = p.communicate()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.