如何在 Python 腳本中擷取標準輸出?

Patricia Arquette
發布: 2024-10-17 14:57:02
原創
917 人瀏覽過

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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!