簡體   English   中英

獲取 python 子進程的 output

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM