2012-01-22 2 views
1

В программе DOS .exe (без доступа к исходному коду) экран DOS говорит: rate = 60. (или какое-то другое значение).Чтение значений из текущей программы

Как читать вывод «60» для ввода в приложение, которое я создаю в Python или C/C++, , кроме чтения и ввода его (я хочу запускать его десятки раз).

Эта программа работает в режиме Windows XP.

ответ

0

Вы можете использовать трубу. prgm.exe | anotherprogram.exe Просто помните, что anotherprogram получит весь выход prgm.exe

2

В питона:

import commands 
commands.getoutput(cmd) 

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

+1

«[Устаревший начиная с версии 2.6:.. Модуль команд был удален в Python 3.0 Используйте модуль подпроцесс вместо] (http://docs.python.org/library/commands.html#module-commands) « – senderle

+0

@senderle, спасибо, тогда пусть ответ с подпроцессом будет считаться правильным! – Sergey

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

Как видно из сообщения [RanRag] (http://stackoverflow.com/a/8964406/577088), модуль 'shlex' может быть полезен для взлома командной строки в правильно разобранный список для ввода в' Popen' конструктор. – senderle

0

Вы также можете вызвать приложение из своего приложения и сохранить возвращаемое значение с помощью ShellExecute.

1

Попробуйте Subprocess модуль для запуска dos.exe программа из кода python.

import shlex 
cmdline = "command to execute your exe file" 
cmd = shlex.split(cmdline) 
output_process = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE).communicate() 
Смежные вопросы