我有一个Windows控制台应用程序,它返回一些文本。我想在Python脚本中阅读该文本。我尝试使用os.system读取它,但它无法正常工作。
import os
foo = os.system('test.exe')
假设test.exe返回“bar”,我希望变量foo设置为“bar”。但是会发生什么,它在控制台上打印“bar”,变量foo设置为0.
我需要做些什么来获得我想要的行为?
答案 0 :(得分:8)
请使用子流程
import subprocess
foo = subprocess.Popen('test.exe',stdout=subprocess.PIPE,stderr=subprocess.PIPE)
http://docs.python.org/library/subprocess.html#module-subprocess
答案 1 :(得分:2)
警告:这仅适用于UNIX系统。
我发现当你想要的所有输出被捕获时,subprocess
是过度的。我建议使用commands.getoutput()
:
>>> import commands
>>> foo = commands.getoutput('bar')
从技术上讲,它只代表你做popen()
,但这个基本目的要简单得多。
BTW,os.system()
不返回命令的输出,它只返回退出状态,这就是为什么它不适合你。
或者,如果您同时需要退出状态和命令输出,请使用commands.getstatusoutput()
,它返回2元组(状态,输出):
>>> foo = commands.getstatusoutput('bar')
>>> foo
(32512, 'sh: bar: command not found')