2009-12-11 5 views
4

일부 텍스트를 반환하는 Windows 콘솔 응용 프로그램이 있습니다. 나는 그 텍스트를 파이썬 스크립트로 읽고 싶다. os.system을 사용하여 읽기를 시도했지만 제대로 작동하지 않습니다.Python 2.6 : Windows 콘솔 응용 프로그램에서 데이터 읽기. (os.system?)

test.exe가 "bar"를 반환한다고 가정하고 변수 foo를 "bar"로 설정합니다. 하지만 무슨 일이 일어나는가, 콘솔에 "bar"를 출력하고 변수 foo는 0으로 설정됩니다.

원하는 동작을 얻으려면 어떻게해야합니까?

답변

8

서브 프로세스를

import subprocess 
foo = subprocess.Popen('test.exe',stdout=subprocess.PIPE,stderr=subprocess.PIPE) 

http://docs.python.org/library/subprocess.html#module-subprocess

+2

: 당신이 종료 상태 및 명령 출력을 모두 필요한 경우

또는 (상태, 출력)의 2 튜플을 반환 commands.getstatusoutput()를 사용합니다. 텍스트를 얻으려면 다음과 같이하십시오 : result = foo.stdout.readlines() 'result'에 원하는 텍스트가 있습니다. – Jeremy

+0

그래, .readlines() 또는 .read()는 올바른 방법 ™을 제안하기 위해 – YOU

+0

+1을 사용할 것입니다. :) – jathanism

2

경고를 사용하십시오 : UNIX 시스템 이 유일한 작품.

subprocess은 출력물이 모두 캡쳐되어 출력 될 때 잔인합니다. 나는 commands.getoutput()의 사용을 권장합니다

>>> import commands 
>>> foo = commands.getoutput('bar') 

은 기술적으로 그냥 대신에 popen()을하고있어,하지만 그것은 기본적인 목적을 위해 많은 간단합니다.

BTW, os.system()은 명령의 출력을 반환하지 않으며, 종료 상태 만 반환하기 때문에 그 이유가 작동하지 않습니다. 이 작품

>>> foo = commands.getstatusoutput('bar') 
>>> foo 
(32512, 'sh: bar: command not found') 
+0

나는 이것을 시험해 보았지만 '{'문자에 질식하는 것으로 보인다. " '{'은 내부 또는 외부 명령, \ noperable 프로그램 또는 배치 파일로 인식되지 않습니다." – Jeremy

+0

"{"가 어디에서 왔습니까! – jathanism

+0

죄송합니다, 나는 설명해야합니다 .. '{'는 텍스트에서 exe가 반환하는 문자입니다. – Jeremy

관련 문제