0
我想在引發TimeoutExpired異常時獲取子進程輸出(在Windows上)。有任何想法嗎?終止後Python捕獲子進程輸出
try:
proc = subprocess.run(cmd,timeout=3)
except subprocess.TimeoutExpired:
print(???)
我想在引發TimeoutExpired異常時獲取子進程輸出(在Windows上)。有任何想法嗎?終止後Python捕獲子進程輸出
try:
proc = subprocess.run(cmd,timeout=3)
except subprocess.TimeoutExpired:
print(???)
您需要在訂貨時超時趕上過程輸出使用Popen和subprocess.PIPE。特別是Popen.communicate是你需要的。 下面是一個例子
proc = subprocess.Popen(["ping", "192.168.1.1"],
stdout=subprocess.PIPE)
try:
output, error = proc.communicate(timeout=2)
except subprocess.TimeoutExpired:
proc.kill()
output, error = proc.communicate()
print(output)
print(error)
這將打印過程輸出到超時期滿。
thnx爲答案@Leonardo。我嘗試了它,但它只是打印命令而不是過程的輸出:「命令'[...,...]'在4秒後超時」(就像您示例中的第二個輸出行)。我想在它終止時打印子流程輸出。 –
@Ali_G我找到了一個解決方案,請讓我知道。 –
這對我來說都不起作用......我認爲問題在於@ J.F提到的問題。塞巴斯蒂安在一些其他職位(即[鏈接](http://stackoverflow.com/questions/33886406/how-to-avoid-the-deadlock-in-a-subprocess-without-using-communicate/33886970#33886970)) 。無論如何,我們還需要 Thnx! –