多くの場合、サードパーティのライブラリは実行中に情報を stdout に出力します。これはデバッグには便利ですが、出力が乱雑になり、他のプロセスが中断される可能性もあります。この出力を制御するには、コンテキスト マネージャーを利用してキャプチャすることを検討してください。
from io import StringIO <br>import sys</p> <p>class Capturing (リスト):</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>
Afterブロックの出力変数には、stdout に出力されるすべての行のリストが含まれます。
以上がコンテキスト マネージャーを使用して Python 関数からの出力をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。