문제

거기 있습니다 비슷한 질문 이것에 대해서는 명확한 대답을보고 싶습니다. 명령 줄 프로세스를 마무리하기 위해 Pythoncard와 함께 간단한 GUI를 구축하고 있습니다. 구체적으로, 그것은 일련의 개미 작업 및 기타 사용자 정의 작업을위한 래퍼이므로 비 DEV가 사용할 수 있습니다.

하위 프로세스의 출력을 창의 텍스트 주로로 리디렉션하고 싶습니다. 이것을하는 방법은 사용하는 것 같습니다. subprocess.Popen(command, stdout=subprocess.PIPE) 출력을 변수에로드하십시오.

문제는 하위 프로세스의 출력으로 창을 어떻게 살아야합니까? 모든 힌트를 환영합니다

감사

도움이 되었습니까?

해결책

랩핑 할 수있는 모든 하위 프로세스는 실제로 터미널에 연결되어 있다고 믿지 않는 한 출력을 완충합니다. 하위 프로세스는 그렇게 할 수 없습니다. 오히려, 조사하십시오 pexpect (Microsoft Windows를 제외한 모든 플랫폼을 가질 수있는 모든 플랫폼에서 잘 실행됩니다. 초자마 그러나 나는 후자에 대한 경험이 없습니다).

이 모듈은 생성 되 자마자 하위 프로세스의 출력을 제공하고 모듈을 해당 출력을 바보로 바보로 만들어서 버퍼링없이 해당 출력을 생산하기 위해 노력하므로 해당 출력을 실시간으로 쉽게 받고 텍스트 필드에 추가 할 수 있어야합니다. 계속 업데이트하고 싶습니다.

다른 팁

나는 이것에 대한 해결책도 찾고 있었다. 솔루션이 놀랍도록 간단하다는 것이 밝혀졌습니다.

Proc = subprocess.popen ( "뭐든지", cwd = "startup dir", shell = true, stdout = subprocess.pipe, stderr = subprocess.stdout)
사실이지만 :
txt = proc.stdout.readline ()
TXT가 아닌 경우 : 브레이크
txt = txt.replace ( " r n", " n"). 교체 ( " r n", " n"). 교체 ( "", "")
self.components.tastdout.appendText (txt)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top