2011-10-04 4 views
1

파이썬 스크립트를 실행하고 그 결과를 캡처하려고합니다. 그것은 첫 번째 출력 라인 후에 내 문자열 대신 콘솔로 리디렉션되는 것처럼 보입니다. Manage.py는 프로덕션 서버 시작 또는 유닛 테스트 실행과 같은 Django 프로젝트 관리를위한 명령 행 유틸리티입니다.Popen PIPE와의 통신이 프로세스의 모든 출력을 포착하지 못합니다.

Ran 1 test in 0.000s 

OK 
*****Own output***** 
Creating test database for alias 'default'... 
Destroying test database for alias 'default'... 

이유는 첫 번째 라인을 사로 잡았되지 않습니다

import os, string, datetime 
from subprocess import Popen, PIPE 

def runProcess(command, parameters): 
    process = Popen([command]+parameters, stdout=PIPE) 
    output=process.communicate()[0] 
    return output 

testStatus=runProcess('python',['manage.py','test','coffeebean']) 

print ("*****Own output*****") 
print(testStatus) 

이 출력은 다음과 같습니다

이 내 코드?

안부, 다니엘 그들은 stderr에 기록하고 있기 때문에

+0

다니엘,이 질문에 대한 manage.py (잘하면 아주 간단한 버전) 및 예상되는 출력이 도움이 될 것입니다. – jhclark

+0

죄송합니다, 이것은 장고 프로젝트라고 언급하는 것을 잊었습니다. Manage.py는 django 프로젝트를 관리하는 명령 행 유틸리티입니다. 내 원래 게시물을 편집하겠습니다 – DkM

답변

3

하지 표준 출력. 시도

def runProcess(command, parameters): 
    process = Popen([command]+parameters, stdout=PIPE,stderr=PIPE) 
    return process.communicate() 

out,err =runProcess('python',['manage.py','test','coffeebean']) 

print ("*****Own output*****") 
print(out) 
print ("*****Own error output*****") 
print(err) 
+0

완벽! 의미가있다 :) 고마워. – DkM

관련 문제