2010-08-19 3 views
1

FFmpeg를 subprocess.Popen으로 호출하고 필요한 데이터를 검색 할 수 있습니다 (진행을 위해).하지만 콘솔에서만 가능합니다. 나는 주변을 둘러 보았고 데이터가 "라이브"가되지 못하는 것을 보았습니다 when running with pythonw. 그러나 FFmpeg 주위에 PyQT GUI를 래핑하려고 할 때부터 프로세스가 데이터 검색을 끝낼 때까지 기다리는 것이 중요합니다. 그래서 나는 꽤 진보적 인 바 (bar)와 다른 것들을 가질 수 있습니다. 그래서 문제는 pythonw를 사용할 때 서브 프로세스 호출에서 "실제"데이터를 가져올 수 있습니까?Windows의 서브 프로세스에서 stdout 가져 오기

아직 py2exe로 응용 프로그램을 컴파일하지 않았지만 Windows 응용 프로그램으로 문제를 해결할 수 있습니까?

+0

링크 된 질문은 하위 프로세스가있는 파이프 사용 방법을 보여줍니다. 시도해 보셨습니까? 어떻게 된 거예요? – katrielalex

답변

4
process = subprocess.Popen(your_cmd, shell=true, stdout=subprocess.PIPE, 
          stderr=subprocess.STDOUT) 

count=0 
while True: 
    buff = process.stdout.readline() 

    if buff == '': 
     count += 1 

    if buff == '' and process.poll() != None: 
     break 

    sys.stdout.write(buff) 

process.wait() 
+0

이 문제가 해결되었습니다. 실제로 실제로 똑같은 코드를 사용하고 있었지만, stderr를 잡아 내지 못했습니다. 따라서 잘못된 헤더 문제가 발생했습니다. stderr을 추가하면 작동했습니다. 감사! – Cryptite

0

subprocess.Popen을 호출 할 때 stdout=subprocess.PIPE을 사용하십시오. 그러면 해당 프로세스의 .stdout에서 읽을 수 있습니다.

관련 문제