【问题标题】:Read values from a running program从正在运行的程序中读取值
【发布时间】:2012-02-16 08:53:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ python c windows io


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      尝试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】:

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

        【讨论】:

        • 正如RanRag 的帖子所示,shlex 模块可用于将命令行分解为正确解析的列表,以便输入到Popen 构造函数中。
        【解决方案4】:

        在python中:

        import commands
        commands.getoutput(cmd)
        

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

        【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2013-04-23
          • 2012-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-24
          • 1970-01-01
          相关资源
          最近更新 更多