从正在运行的程序中读取值

时间:2012-01-22 20:15:39

标签: c++ python c windows io

在DOS .exe程序中(无法访问源代码),DOS屏幕显示:rate = 60.(或其他一些值)。

如何读取输出“60”以用作我在Python或C / C ++中创建的应用程序的输入, 除了通过阅读和输入(我想运行它几十次)。

此程序在Windows XP模式下运行。

5 个答案:

答案 0 :(得分:5)

使用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

答案 1 :(得分:2)

在python中:

import commands
commands.getoutput(cmd)

http://docs.python.org/library/commands.html#commands.getoutput

答案 2 :(得分:1)

尝试使用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()

答案 3 :(得分:0)

您可以使用管道。 prgm.exe | anotherprogram.exe 请记住,另一个程序将获得prgm.exe的整个输出

答案 4 :(得分:0)

您还可以从应用中调用应用程序,并使用ShellExecute存储返回值。