2017-03-02 1 views
1

내 목표는 파일을 실행하고 상태 (성공하면 0)를 반환하고 결과도 반환하는 것입니다. 시뮬레이션을 실행하는 상태가 OS 모듈을 사용하고 있습니다.배치 파일 실행 반환

status= os.system("file") 

출력을 위해 서브 프로세스 모듈을 사용하고 있습니다.

output=subprocess.check_output("file") 

내 질문 : 파일을 두 번 실행하지 않고도 상태와 출력을 모두 가질 수있는 기능이 있습니까?

+0

윈도우의 경우 '% errorlevel %'시스템 변수를 통해 os.system()을 확인하여 상태를 확인할 수 있습니다. –

+2

'subprocess.Popen'이이를 수행합니다. ('wait()'는 리턴 상태를 나타내고'stdout'은 출력을 나타냅니다. –

답변

1

check_output 이미 필요한 모든 작업을 수행합니다. 워드 프로세서에서 :

subprocess.check_output (인수, *, 표준 입력 = 없음, 표준 오류 = 없음, 쉘 = 거짓, universal_newlines = 거짓) 인수 명령을 실행하고 바이트 문자열로의 출력을 반환합니다.

반환 코드가 0이 아닌 경우 CalledProcessError가 발생합니다. CalledProcessError 객체는 반환 코드 속성에서 반환 코드 및 출력에서 ​​출력을 가지고 모든 것이 잘 작동하는 경우

그래서, 그냥 출력을 반환합니다 속성 것입니다. 그렇지 않으면 호출 된 프로세스의 오류까지의 부분 출력뿐만 아니라 정확한 리턴 코드가있는 예외가 발생합니다.