종종 타사 라이브러리는 실행 중에 정보를 stdout에 인쇄합니다. 이는 디버깅에 유용할 수 있지만 출력을 복잡하게 만들고 다른 프로세스를 방해할 수도 있습니다. 이 출력을 제어하려면 컨텍스트 관리자를 활용하여 캡처하는 것이 좋습니다.
from io import StringIO <br>import sys</p> <p>class 캡처 (목록):</p> <pre class="brush:php;toolbar:false">def __enter__(self): self._stdout = sys.stdout sys.stdout = self._stringio = StringIO() return self def __exit__(self, *args): self.extend(self._stringio.getvalue().splitlines()) del self._stringio # free up some memory sys.stdout = self._stdout
특정 코드 블록 내에서 출력을 캡처하려면:
<code class="python">with Capturing() as output: do_something(my_object)</code>
이후 블록의 경우 출력 변수에는 stdout에 인쇄된 모든 행의 목록이 포함됩니다.
위 내용은 컨텍스트 관리자를 사용하여 Python 함수의 출력을 캡처하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!