使用 Python 的 subprocess
模块和 communicate()
方法时如何检索退出代码?
相关代码:
import subprocess as sp
data = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE).communicate()[0]
我应该换一种方式吗?
原文由 CarpeNoctem 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 Python 的 subprocess
模块和 communicate()
方法时如何检索退出代码?
相关代码:
import subprocess as sp
data = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE).communicate()[0]
我应该换一种方式吗?
原文由 CarpeNoctem 发布,翻译遵循 CC BY-SA 4.0 许可协议
.poll()
将更新返回码。
尝试
child = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE)
returnCode = child.poll()
此外,在 .poll()
被调用后,对象中的返回代码可用 child.returncode
。
原文由 Matthew Vernon 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
Popen.communicate
后将设置returncode
属性(*)。这是相关的文档部分:所以你可以这样做(我没有测试它但它应该有效):
(*) 发生这种情况是因为它的实现方式:在设置线程以读取子流之后,它只调用
wait
。