파일과 터미널 모두에 출력되는 실행 파일 실행
subprocess.call()을 사용하여 여러 실행 파일을 실행할 때 파일과 터미널 모두에 대한 표준 출력 및 오류 출력. 그러나 stdout=outf 또는 stderr=errf를 사용하면 출력이 터미널에 표시되지 않고 파일에 기록되어야만 지정됩니다.
원하는 동작을 달성하려면 Popen 클래스를 직접 활용하고 stdout=PIPE 인수는 파일 대신 파이프로 표준 출력을 캡처합니다. 이를 수행하는 방법은 다음과 같습니다.
<code class="python">from subprocess import Popen, PIPE with open("out.txt", "wb") as outf, open("err.txt", "wb") as errf: p = Popen(["cat", __file__], stdout=PIPE, stderr=errf) # Read the output from the pipe output = p.stdout.read() # Write the output to the terminal print(output) # Ensure the process completes and wait for the output to be fully written p.wait()</code>
이 예에서는 stdout을 파이프로 캡처하고 p.stdout.read()를 사용하여 읽습니다. 그런 다음 프로세스가 완료되고 출력이 파일에 완전히 기록될 때까지 기다리기 전에 출력을 터미널에 인쇄합니다. 이렇게 하면 출력이 터미널에 표시되고 지정된 파일에 기록됩니다.
위 내용은 실행 파일 출력을 파일과 터미널 모두로 리디렉션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!