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

4 投票
2 回答
3223 浏览
提问于 2025-04-15 16:54

我有一个Windows控制台应用程序,它会返回一些文本。我想在一个Python脚本中读取这些文本。我尝试过用os.system来读取,但效果不太好。

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

假设test.exe返回的是“bar”,我希望变量foo被设置为“bar”。但实际上,它在控制台上打印了“bar”,而变量foo却被设置为0。

我需要做些什么才能得到我想要的效果呢?

2 个回答

2

警告:这只适用于UNIX系统。

我发现使用subprocess来捕获输出有点过于复杂了。如果你只是想获取输出,我推荐使用commands.getoutput()

>>> import commands
>>> foo = commands.getoutput('bar')

从技术上讲,它其实是在帮你调用popen(),但这样做简单多了,适合这个基本的需求。

顺便说一下,os.system()并不会返回命令的输出,它只会返回一个退出状态,这就是为什么它对你没有用的原因。

另外,如果你需要同时获取退出状态和命令输出,可以使用commands.getstatusoutput(),它会返回一个包含(状态,输出)的二元组:

>>> foo = commands.getstatusoutput('bar')
>>> foo
(32512, 'sh: bar: command not found')
8

请使用subprocess模块

import subprocess
foo = subprocess.Popen('test.exe',stdout=subprocess.PIPE,stderr=subprocess.PIPE)

http://docs.python.org/library/subprocess.html#module-subprocess

撰写回答