如何子进程调用和捕获成功

时间:2015-12-18 22:47:49

标签: python subprocess

阅读子进程模块(https://docs.python.org/2/library/subprocess.html) 我不清楚每个单词是否需要单独用引号括起来,还是可以按某种方式分组

例如:

cmd -vvv <positional arg> <keyword arg> <keyword arg>

这是调用子进程的正确方法:

subprocess.call(['command', '-vvv', '<positional arg>', '<keyword arg>', '<keyword arg>'])
subprocess.call(['command', '-vvv', '<positional arg>', '<keyword arg> <keyword arg>'])
subprocess.call(['command', '-vvv', '<positional arg> <keyword arg> <keyword arg>'])

如果正确处理它也是如何捕获的。这是正确的方式:

a = subprocess.call(...from above...)
if a == 0:
    success
else:
    fail

这似乎不正确,但我看到它回归&#39; 0&#39;当它成功时,就想到了上面的解决方案。

1 个答案:

答案 0 :(得分:3)

第一种是正确的方法:

subprocess.call(['command', '-vvv', '<positional arg>', '<keyword arg>', '<keyword arg>'])

更好地使用subprocess.check_call()而不是自己检查失败:

  

使用参数运行命令。等待命令完成。如果   退出代码为零然后返回,否则提高   CalledProcessError。 CalledProcessError对象将具有   返回代码返回代码。

如果您还需要流程的输出,请使用subprocess.check_output()