スクリプト標準出力のキャプチャ
スクリプトが標準出力へのデータの書き込み、その出力のキャプチャなどの特定のタスクを実行するシナリオ。さらなる処理にとって重要になる可能性があります。一般的なアプローチでは、次の例に示すように、出力を変数に保存しようとします。
<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 サイトの他の関連記事を参照してください。