gpt4 book ai didi

python-3.x - 在 Python 3 中替换 getstatusoutput

转载 作者:行者123 更新时间:2023-12-04 09:19:36 28 4
gpt4 key购买 nike

由于命令模块自 Python 2.6 起已弃用,我正在寻找替换 commands.getstatusoutput 的最佳方法它返回命令的返回码和输出的元组。 subprocess模块是相当明显的,但是,它不能直接替代 getstatusoutput。有关 getstatusoutput 的相关问题中讨论了一个潜在的解决方案。 - 但是,我不打算重写原始函数(无论如何它的 LOC 少于 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

如果你想要 stdoutstderr一起使用 stderr=subprocess.STDOUT .

关于python-3.x - 在 Python 3 中替换 getstatusoutput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11344557/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com