ホームページ  >  記事  >  バックエンド開発  >  コンテキスト マネージャーを使用して Python 関数からの出力をキャプチャするにはどうすればよいですか?

コンテキスト マネージャーを使用して Python 関数からの出力をキャプチャするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-03 12:31:03193ブラウズ

How to Capture Output from a Python Function with a Context Manager?

キャプチャによる Python 関数からの出力のインターセプト

多くの場合、サードパーティのライブラリは実行中に情報を stdout に出力します。これはデバッグには便利ですが、出力が乱雑になり、他のプロセスが中断される可能性もあります。この出力を制御するには、コンテキスト マネージャーを利用してキャプチャすることを検討してください。

Implementation

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 に出力されるすべての行のリストが含まれます。

高度なテクニック

  • 複数のキャプチャ: このコンテキスト マネージャーは、出力を蓄積するために複数回使用できます。
  • contextlib.redirect_stdout() との統合 (Python 3.4 ): これは、io.StringIO.
を使用してリダイレクトを実現する代替方法を提供します。

以上がコンテキスト マネージャーを使用して Python 関数からの出力をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:住宅価格_予測次の記事:住宅価格_予測