Я вызываю внешнюю программу в скрипте Python, используя подпроцесс. Внешняя программа производит много выходных данных. Мне нужно записать результаты этой программы. Текущий код-то вроде этого:Захват вывода через подпроцесс без использования связи
process = subprocess.Popen('cmd.exe', shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=None)
process.stdin.write('gams "indus89.gms"\r\n')
while process.poll() != None:
line = process.stdout.readline()
print line
ошибки я получаю с этим кодом
процесс пытался писать к несуществующему трубе.
Если я использую следующий код:
process = subprocess.Popen('cmd.exe', shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=None)
process.stdin.write('gams "indus89.gms"\r\n')
o, e = process.communicate()
print o
, то выход из программы не захваченный.
Как мне изменить свой код, чтобы я мог записывать выходные данные сторонней программы во время ее запуска?
Почему вы используете 'cmd.exe' и' shell = False', почему бы не '' gams "indus89.gms" ''с' shell = True'? –