sys.stdout을 사용하여 쓰기 작업을 수행하는 스크립트가 있다고 가정합니다. 출력을 캡처하고 추가 처리를 위해 변수에 저장하는 초기 솔루션은 다음과 같습니다.
<code class="python"># writer.py import sys def write(): sys.stdout.write("foobar") # mymodule.py from writer import write out = write() print(out.upper())</code>
그러나 이 접근 방식은 출력을 캡처하지 못합니다.
가능한 솔루션 중 하나는 수정하는 것입니다.
<code class="python">import sys from cStringIO import StringIO # setup the environment backup = sys.stdout # #### sys.stdout = StringIO() # capture output write() out = sys.stdout.getvalue() # release output # #### sys.stdout.close() # close the stream sys.stdout = backup # restore original stdout print(out.upper()) # post processing</code>
이 접근 방식은 버퍼를 사용하여 출력 스트림을 캡처합니다.
Python 3.4부터 contextlib.redirect_stdout을 사용하여 출력을 캡처하는 더 간결한 방법이 있습니다. 컨텍스트 관리자:
<code class="python">from contextlib import redirect_stdout import io f = io.StringIO() with redirect_stdout(f): help(pow) s = f.getvalue()</code>
이 솔루션은 더 간단하며 백업을 관리하고 스트림을 수동으로 닫을 필요가 없습니다.
위 내용은 I/O 조작을 사용하여 Python 스크립트에서 출력을 캡처하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!