【发布时间】:2013-09-15 08:42:07
【问题描述】:
我想在运行os.system 调用后在变量中获取stdout。
我们以这一行为例:
batcmd="dir"
result = os.system(batcmd)
result 将包含错误代码(Windows 下的stderr 0 或某些Linux 下的1 以上示例)。
如何在执行的命令中不使用重定向来获取上述命令的stdout?
【问题讨论】:
-
改用
subprocess模块。os.system不让您访问过程输入或输出。 -
@MartijnPieters 这是唯一的方法吗?
-
不,但是
subprocess封装了 Windows 和 POSIX 系统之间的差异,比你能实现的要好得多。为什么要重新发明轮子? -
相信我,我曾经重新发明过那个轮子。来自 C 背景,跳好老式的 fork/exec/pipe 舞几乎是自然而然的事,但@MartijnPieters 是对的,只需使用 subprocess 就可以了。
-
Python 2.7 添加了
subprocess.check_output()function,这足以满足您的需求,但除此之外,这两个目标几乎相同。
标签: python python-2.7 stdout stderr os.system