【发布时间】:2012-02-16 08:53:34
【问题描述】:
在 DOS .exe 程序(无法访问源代码)中,DOS 屏幕显示:rate = 60.(或其他值)。
如何读取输出“60”以用作我在 Python 或 C/C++ 中制作的应用程序的输入, 除了阅读和打字(我想运行它几十次)。
此程序在 Windows XP 模式下运行。
【问题讨论】:
在 DOS .exe 程序(无法访问源代码)中,DOS 屏幕显示:rate = 60.(或其他值)。
如何读取输出“60”以用作我在 Python 或 C/C++ 中制作的应用程序的输入, 除了阅读和打字(我想运行它几十次)。
此程序在 Windows XP 模式下运行。
【问题讨论】:
您还可以从您的应用程序调用应用程序并使用ShellExecute 存储返回值。
【讨论】:
尝试Subprocess模块从python代码运行dos.exe程序。
import shlex
cmdline = "command to execute your exe file"
cmd = shlex.split(cmdline)
output_process = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE).communicate()
【讨论】:
使用subprocess 模块。有几种不同的方法;最通用的是使用Popen 对象。
>>> import subprocess
>>> proc = subprocess.Popen(['echo', 'rate = 60'], stdout=subprocess.PIPE,
stdin=subprocess.PIPE,
stderr=subprocess.PIPE)
>>> proc.communicate()
('rate = 60\n', '')
如果您运行的是 Python 2.7 或更高版本,那么您也可以使用 subprocess.check_output。
【讨论】:
shlex 模块可用于将命令行分解为正确解析的列表,以便输入到Popen 构造函数中。
在python中:
import commands
commands.getoutput(cmd)
http://docs.python.org/library/commands.html#commands.getoutput
【讨论】:
您可以使用管道。
prgm.exe | anotherprogram.exe
请记住,另一个程序将获得 prgm.exe 的全部输出
【讨论】: