「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python でプログラム出力を効果的にキャプチャする方法: 基本的なソリューションを超えて

Python でプログラム出力を効果的にキャプチャする方法: 基本的なソリューションを超えて

2024 年 11 月 8 日に公開
ブラウズ:600

How to Capture Program Output Effectively in Python: Beyond Basic Solutions

プログラム出力のキャプチャ: 素朴なソリューションを超えて

Python スクリプトでは、さらに処理するためにプログラム出力をキャプチャすることが一般的なニーズです。素朴な解決策は簡単そうに見えますが、多くの場合、不十分です。 stdout に書き込む次のスクリプトを考えてみましょう:

# writer.py
import sys

def write():
    sys.stdout.write("foobar")

次のコードを使用して出力をキャプチャしようとすると失敗します:

# mymodule.py
from writer import write

out = write()
print(out.upper())

出力を効果的にキャプチャするには、より堅牢なソリューションが必要です。 1 つのアプローチには、システムの stdout ストリームを変更することが含まれます:

import sys
from cStringIO import StringIO

# Redirect stdout to a StringIO object
backup = sys.stdout
sys.stdout = StringIO()

# Perform the write operation
write()

# Retrieve and restore stdout
out = sys.stdout.getvalue()
sys.stdout.close()
sys.stdout = backup

# Process the captured output
print(out.upper())

Python 3.4 のコンテキスト マネージャー :

Python 3.4 以降では、contextlib を使用して、よりシンプルで簡潔なソリューションが利用可能です。 redirect_stdout コンテキスト マネージャー:

from contextlib import redirect_stdout
import io

f = io.StringIO()
# Redirect stdout to f using the context manager
with redirect_stdout(f):
    help(pow)

# Retrieve captured output from f
s = f.getvalue()

この洗練されたアプローチにより、出力キャプチャ プロセスが簡素化され、Python スクリプトでの処理が容易になります。

リリースステートメント この記事は次の場所に転載されています: 1729147521 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3