[英]Python subprocess package does not report errors from subprocess?
在某些機器上,用於以下代碼
p = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.STDOUT);
out, err = p.communicate()
該腳本將僅掛在p.communicate()
,並且不會返回。
手動運行命令后,我終於看到錯誤消息。
為什么會這樣,我應該如何解決呢?
謝謝。
嘗試stderr = subprocess.PIPE
不是stderr = subprocess.STDOUT
我猜你的程序永遠不會結束?
當您調用communication()時,它將在不同的操作系統下執行不同的操作。 但是它總是等待啟動的進程自己退出,例如。 調用p.wait()。 p.wait()僅在進程終止時終止。
解決方案:
方式
def main():
## here is you program code
if __name__ == '__main__':
import thread, sys, time
_id = thread.start_new(main, ())
time.sleep(1)
t = time.time() + 100 # execute maximum 100 + 1 seconds
while t > time.time() and _id in sys._current_frames():
time.sleep(0.001)
如果要查看子流程的源,可以在subprocess.__file__
找到它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.