>  기사  >  백엔드 개발  >  실행 파일 출력을 파일과 터미널 모두로 리디렉션하는 방법은 무엇입니까?

실행 파일 출력을 파일과 터미널 모두로 리디렉션하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-04 08:36:30306검색

How to Redirect Executable Output to Both Files and the Terminal?

파일과 터미널 모두에 출력되는 실행 파일 실행

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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