"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 파이썬에서 하위 프로세스 출력을 어떻게 침묵 시키려면?

파이썬에서 하위 프로세스 출력을 어떻게 침묵 시키려면?

2025-01-26에 게시됨
검색:677

How Can I Silence Subprocess Output in Python?

하위 프로세스를 사용할 때 직면 한 일반적인 과제 중 하나는 실행 된 명령이 생성 할 가능성이 있습니다. 터미널 또는 출력 디스플레이를 어지럽히고 스크립트 자체 출력의 가독성을 방해 할 수있는 원치 않는 출력. 이것은 진단 메시지 또는 장점 상태 업데이트를 제공하는 명령을 사용할 때 특히 널리 퍼져 있습니다.

Python 3.3 이상에 대한 접근 방식

Python 버전 3.3 이상을 사용하는 경우 Subprocess 출력이 A Devnull 상수의 도입 덕분에 간단한 작업. 이 상수는 그 데이터를 버리는 파일과 같은 객체를 나타내며, 출력을 아무데도 효과적으로 리디렉션합니다.

는 devnull을 활용하고 하위 프로세스 출력을 억제하고 STD 아웃과 stderr 스트림을 모두 리디렉션합니다. ]

import subprocess retcode = subprocess.call (

, stdout = subprocess.devnull, stderr = subprocess.stdout)

import subprocess

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

의 경우, Silencing Subprocess 출력은 약간 다른 접근법이 필요합니다. Python 2.7은 Devnull 상수가 없으므로 /dev /null 파일을 수동으로 열고 출력을 리디렉션해야합니다.

Python 2.7 :

에서이를 달성 할 수있는 방법은 다음과 같습니다. 수입 하위 프로세스 fnull = Open (os.devnull, 'w') retcode = subprocess.call (

, stdout = fnull, stderr = subprocess.stdout)

/dev /null 파일을 열어 (null 장치를 나타내는 모든 데이터를 파괴 함)를 stdout 및 stderr 인수로 전달하여 subprocess.call (), 우리는 모든 서브 프로세스 출력을 공극으로 효과적으로 리디렉션하여 깨끗하고 깔끔한 터미널을 보장합니다.
import os
import subprocess

FNULL = open(os.devnull, 'w')
retcode = subprocess.call(['echo', 'foo'],
    stdout=FNULL,
    stderr=subprocess.STDOUT)
대체 방법 : Shell Command 리디렉션

완전성을 위해 대체 접근법을 언급하는 것이 좋습니다. 쉘 명령. 이 방법은 휴대 성이 덜 휴대용이며 일반적으로 Python 스크립트에서 사용하는 것이 권장되지 않지만 특정 시나리오에서 유용 할 수 있습니다. ]

이 접근법은 쉘 명령을 직접 실행하여> 연산자를 사용하여 /dev /null로 에코 명령의 출력을 리디렉션합니다. 깨끗하고 읽기 쉬운 출력 디스플레이를 출력하고 유지 관리합니다. 이러한 기술을 사용하면 하위 프로세스 출력을 효과적으로 숨기고 원하는 정보 만 사용자에게 제시되도록 할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3