하위 프로세스 명령의 실시간 출력
실시간 출력을 모두 캡처하고 로깅을 위해 저장하려면 다음 접근 방식 중 하나를 사용하세요.
반복자 사용
하위 프로세스 stdout에서 읽고 동시에 쓰기 위한 반복자:
import subprocess import sys with open("test.log", "wb") as f: process = subprocess.Popen(your_command, stdout=subprocess.PIPE) for c in iter(lambda: process.stdout.read(1), b""): sys.stdout.buffer.write(c) f.buffer.write(c)
작성기와 판독기 사용
작성기를 하위 프로세스에 전달하고 판독기에서 읽습니다. :
import io import time import subprocess import sys filename = "test.log" with io.open(filename, "wb") as writer, io.open(filename, "rb", 1) as reader: process = subprocess.Popen(command, stdout=writer) while process.poll() is None: sys.stdout.write(reader.read()) time.sleep(0.5) # Read the remaining sys.stdout.write(reader.read())
위 내용은 실시간 하위 프로세스 출력을 캡처하고 동시에 기록하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!