ホームページ > バックエンド開発 > Python チュートリアル > I/O 操作を使用して Python スクリプトから出力をキャプチャする方法

I/O 操作を使用して Python スクリプトから出力をキャプチャする方法

Susan Sarandon
リリース: 2024-10-17 14:49:29
オリジナル
796 人が閲覧しました

How to Capture Output from a Python Script Using I/O Manipulation?

スクリプトからの出力のキャプチャ

sys.stdout を使用して書き込み操作を実行するスクリプトがあるとします。出力をキャプチャし、その後の処理のために変数に保存する最初の解決策は次のとおりです。

<code class="python"># writer.py
import sys

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

# mymodule.py
from writer import write

out = write()
print(out.upper())</code>
ログイン後にコピー

ただし、このアプローチでは出力をキャプチャできません。

考えられる解決策の 1 つは、次のとおりです。スクリプトは次のようになります。

<code class="python">import sys
from cStringIO import StringIO

# setup the environment
backup = sys.stdout

# ####
sys.stdout = StringIO()     # capture output
write()
out = sys.stdout.getvalue() # release output
# ####

sys.stdout.close()  # close the stream 
sys.stdout = backup # restore original stdout

print(out.upper())   # post processing</code>
ログイン後にコピー

このアプローチでは、バッファーを使用して出力ストリームをキャプチャします。

Python 3.4 以降では、contextlib.redirect_stdout を使用して出力をキャプチャするより簡潔な方法があります。コンテキスト マネージャー:

<code class="python">from contextlib import redirect_stdout
import io

f = io.StringIO()
with redirect_stdout(f):
    help(pow)
s = f.getvalue()</code>
ログイン後にコピー

このソリューションはよりシンプルで、バックアップを管理したりストリームを手動で閉じる必要がなくなります。

以上がI/O 操作を使用して Python スクリプトから出力をキャプチャする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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