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

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

Linda Hamilton
リリース: 2024-11-03 12:31:03
オリジナル
267 人が閲覧しました

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート