Python 提供了两个方便的函数来调用可能失败的子进程,subprocess.check_call
以及subprocess.check_output
. 基本上,
subprocess.check_call(['command', 'arg1', ...])
将指定的命令生成为子进程,阻塞并验证子进程是否成功终止(返回零)。如果不是,它会抛出异常。check_output
做同样的事情,除了它捕获子进程的标准输出并将其作为字节字符串返回。
这很方便,因为它是单个 Python 表达式(您不必通过几行代码设置和控制子进程),并且没有忘记检查返回值的风险。
和 的惯用 Ruby 等价物是check_call
什么check_output
?我知道$?
提供进程返回值的全局变量,但这会很尴尬——出现异常的关键在于您不必手动检查错误代码。在 Ruby 中生成子进程的方法有很多,但我没有看到任何提供此功能的方法。