Python 2.6:从Windows控制台应用程序读取数据。 (使用os.system?)

时间:2009-12-11 04:24:57

标签: python windows console exe

我有一个Windows控制台应用程序,它返回一些文本。我想在Python脚本中阅读该文本。我尝试使用os.system读取它,但它无法正常工作。

import os
foo = os.system('test.exe')

假设test.exe返回“bar”,我希望变量foo设置为“bar”。但是会发生什么,它在控制台上打印“bar”,变量foo设置为0.

我需要做些什么来获得我想要的行为?

2 个答案:

答案 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')