>백엔드 개발 >파이썬 튜토리얼 >Python의 `하위 프로세스`를 사용하여 실시간 프로그램 출력을 표시하는 방법은 무엇입니까?

Python의 `하위 프로세스`를 사용하여 실시간 프로그램 출력을 표시하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-15 09:55:02950검색

How to Display Real-time Program Output with Python's `subprocess`?

하위 프로세스로 실시간 프로그램 출력 액세스

질문:

어떻게 얻을 수 있나요? Python에서 하위 프로세스를 사용하여 실시간 프로그램 출력을 하시겠습니까? 구체적으로 출력을 버퍼링하지 않고 명령줄 프로그램의 진행 상황을 표시하려면 어떻게 해야 합니까?

답변:

다음으로 실행된 프로그램에서 실시간 출력을 얻으려면 하위 프로세스에서는 다음을 사용할 수 있습니다. 기술:

import subprocess

p = subprocess.Popen('svnadmin verify /var/svn/repos/config',
                     stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True,
                     bufsize=0)  # Set bufsize to 0 for no buffering

while True:
    line = p.stdout.readline()
    if not line:
        break
    print(line.replace('\n', ''))

설명:

  • Popen에서 bufsize를 0으로 설정하여 출력 버퍼링을 비활성화했습니다.
  • while 루프에서 , readline()을 사용하여 p.stdout에서 계속해서 줄을 읽습니다.
  • 그렇지 않은 경우 행을 사용할 수 있으면 루프가 중단되고 프로그램이 종료됩니다.
  • 각 행이 수신되는 대로 처리하거나 표시하여 실시간 출력을 제공할 수 있습니다.

참고:

  • 이 방법은 모든 시스템 또는 모든 시스템에서 작동하지 않을 수 있습니다.
  • Python 3.8 이상의 경우 하위 프로세스 출력을 처리하기 위해 원시 파일 설명자 대신 asyncio를 사용하는 것이 좋습니다.

위 내용은 Python의 `하위 프로세스`를 사용하여 실시간 프로그램 출력을 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.