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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-17 14:57:02919ブラウズ

How to Capture Standard Output in Python Scripts?

スクリプト標準出力のキャプチャ

スクリプトが標準出力へのデータの書き込み、その出力のキャプチャなどの特定のタスクを実行するシナリオ。さらなる処理にとって重要になる可能性があります。一般的なアプローチでは、次の例に示すように、出力を変数に保存しようとします。

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

def write():
    sys.stdout.write("foobar")</code>
<code class="python"># mymodule.py
from writer import write

out = write()
print(out.upper())</code>

ただし、このアプローチではスクリプトの出力をキャプチャできません。 StringIO オブジェクトと環境セットアップを使用する代替ソリューションでは、出力が正常にキャプチャされます。

<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 ソリューション

Python バージョン 3.4 以降の場合、さらにcontextlib.redirect_stdout コンテキスト マネージャーを使用すると、簡単なアプローチが利用できます:

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

f = StringIO()
with redirect_stdout(f):
    help(pow)
s = f.getvalue()</code>

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

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