擷取腳本標準輸出
在腳本執行特定任務(例如將資料寫入其標準輸出)的場景中,擷取該輸出對於進一步加工至關重要。常見的方法是嘗試將輸出儲存在變數中,如下例所示:
<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中文網其他相關文章!