서브 프로세스를 사용하여 파이썬 스크립트 내에서 외부 프로그램을 호출 중입니다. 외부 프로그램은 많은 양의 출력을 생성합니다. 이 프로그램의 출력을 캡처해야합니다.통신을 사용하여 서브 프로세스를 통한 출력 캡처
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'로 왜 안되나요? –