eSpeak와 같은 많은 명령줄 도구는 의도한 작업과 함께 자세한 출력을 표시합니다. 이로 인해 셸이 복잡해져서 이전 출력을 읽거나 프롬프트와 상호 작용하기가 어려워질 수 있습니다.
subprocess 모듈을 사용하여 이러한 도구를 호출하는 Python 스크립트의 경우 출력을 침묵시키면 가독성과 유용성이 향상될 수 있습니다. 한 가지 효과적인 방법은 표준 출력(STDOUT) 및 표준 오류(STDERR)를 null 장치로 리디렉션하는 것입니다.
Python 버전 3.3 이상의 경우 subprocess 모듈은 다음을 제공합니다. DEVNULL 상수를 null 장치로 사용합니다. subprocess.call()의 stdout 및 stderr 인수에 DEVNULL을 전달하면 하위 프로세스의 출력이 효과적으로 억제됩니다.
import subprocess subprocess.call(['echo', 'foo'], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)
이전 버전 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!