ホームページ > バックエンド開発 > Python チュートリアル > Python で標準出力をキャプチャするにはどうすればよいですか?

Python で標準出力をキャプチャするにはどうすればよいですか?

DDD
リリース: 2024-11-03 13:34:30
オリジナル
813 人が閲覧しました

How to Capture Standard Output in Python?

Python での標準出力のキャプチャ

Python では、さまざまな理由で標準出力 (stdout) に出力された出力をキャプチャすると便利なことがよくあります。 、後の処理やテストのために保存するなど。一般的なシナリオの 1 つは、情報を stdout に出力する do_something(my_object) などのライブラリから関数を呼び出すことです。

この関数呼び出しの出力をキャプチャするには、次のアプローチを使用できます。

  1. 連結コンテキスト マネージャー (キャプチャ) を実装します。

    • リストから継承する Capturing という名前のクラスを定義します。
    • そのクラスを実装します。 __enter__ メソッドと __exit__ メソッドを使用して、stdout 出力をキャプチャします。
    • その __enter__ メソッドでは、現在の stdout を self._stdout に保存し、stdout をメモリ内の StringIO バッファ (self._stringio) にリダイレクトします。
    • __exit__ メソッドで、stdout を元の状態に復元した後、キャプチャされた出力を内部リスト (self) に追加します。
  2. コンテキスト マネージャーを使用します:

    • with ステートメントを使用して、Capturing のインスタンスを作成します。
    • インスタンスを引数として Capturing の __init__ メソッドに渡し、キャプチャされた出力を前に作成したインスタンスに追加します。 step.
  3. キャプチャされた出力を取得します:

    • with ブロックを終了すると、出力変数にはキャプチャされた出力が含まれます。 stdout は文字列のリストとして出力されます。

使用例:

<code class="python">from contextlib import redirect_stdout  # redirect_stdout is only available in Python 3.4 or later

def do_something(my_object):
    print('stdout info')

with redirect_stdout(StringIO()) as stdout:
    do_something(my_object)
    captured_output = stdout.getvalue()</code>
ログイン後にコピー

Python 3.4 構文の使用:

<code class="python">with StringIO() as output:
    with redirect_stdout(output):
        do_something(my_object)
    captured_output = output.getvalue()</code>
ログイン後にコピー

これらの手順に従うことで、Python 関数呼び出しからの stdout 出力を簡単にキャプチャでき、出力された情報をさらなる処理、デバッグ、またはテストの目的で利用できるようになります。

以上がPython で標準出力をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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