>백엔드 개발 >파이썬 튜토리얼 >Python의 하위 프로세스에서 자세한 출력을 억제하려면 어떻게 해야 합니까?

Python의 하위 프로세스에서 자세한 출력을 억제하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-09 00:33:111017검색

How Can I Suppress Verbose Output from Subprocesses in Python?

하위 프로세스의 과도한 출력 숨기기

eSpeak와 같은 많은 명령줄 도구는 의도한 작업과 함께 자세한 출력을 표시합니다. 이로 인해 셸이 복잡해져서 이전 출력을 읽거나 프롬프트와 상호 작용하기가 어려워질 수 있습니다.

subprocess 모듈을 사용하여 이러한 도구를 호출하는 Python 스크립트의 경우 출력을 침묵시키면 가독성과 유용성이 향상될 수 있습니다. 한 가지 효과적인 방법은 표준 출력(STDOUT) 및 표준 오류(STDERR)를 null 장치로 리디렉션하는 것입니다.

Python 3.3에 대한 출력 리디렉션

Python 버전 3.3 이상의 경우 subprocess 모듈은 다음을 제공합니다. DEVNULL 상수를 null 장치로 사용합니다. subprocess.call()의 stdout 및 stderr 인수에 DEVNULL을 전달하면 하위 프로세스의 출력이 효과적으로 억제됩니다.

import subprocess

subprocess.call(['echo', 'foo'], 
    stdout=subprocess.DEVNULL,
    stderr=subprocess.STDOUT)

Python 2 이하 버전에 대한 출력 리디렉션

이전 버전 2.7을 포함한 Python에서는 DEVNULL 상수를 사용할 수 없습니다. 대신, null 장치를 수동으로 열고 해당 장치로 리디렉션할 수 있습니다.

import os

FNULL = open(os.devnull, 'w')
subprocess.call(['echo', 'foo'], 
    stdout=FNULL, 
    stderr=subprocess.STDOUT)

쉘 스크립트와 동일

위 Python 코드에 해당하는 명령줄은 다음과 같습니다.

retcode = os.system("echo 'foo' >& /dev/null")

이러한 기술을 활용하면 Python 스크립트에서 장황한 하위 프로세스 출력을 침묵시켜 셸을 깨끗하게 유지하고 향후 가독성을 향상시킬 수 있습니다. 상호작용.

위 내용은 Python의 하위 프로세스에서 자세한 출력을 억제하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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