由于命令模块自 Python 2.6 起已被弃用,我正在寻找替换的最佳方法命令.getstatusoutput http://docs.python.org/library/commands.html?highlight=commands#commands.getstatusoutput它返回命令的返回代码和输出的元组。这子流程 http://docs.python.org/library/subprocess.html#module-subprocess模块相当明显,但是,它不提供 getstatusoutput 的直接替代。在有关的相关问题中讨论了潜在的解决方案获取状态输出 https://stackoverflow.com/questions/10202078/python-getstatusoutput-replacement-not-returning-full-output- 但是,我不打算重写原始函数(无论如何,它的行数少于 10 个),但想知道是否有更直接的方法。
没有直接替代,因为commands.getstatusoutput
是一个糟糕的 API;它结合了 stderr 和 stdout,但没有提供单独检索它们的选项。
您应该使用的便捷 API 是subprocess.check_output
因为如果命令失败它会抛出异常。
不然的话,确实显得有些不足subprocess
不提供在单个调用中检索输出和状态的方法,但很容易解决;这是链接问题的答案应该是:
def get_status_output(*args, **kwargs):
p = subprocess.Popen(*args, **kwargs)
stdout, stderr = p.communicate()
return p.returncode, stdout, stderr
如果你想stdout
and stderr
一起使用stderr=subprocess.STDOUT
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)