如何使用上下文管理器捕獲 Python 函數的輸出?

Linda Hamilton
發布: 2024-11-03 12:31:03
原創
190 人瀏覽過

How to Capture Output from a Python Function with a Context Manager?

透過擷取攔截 Python 函數的輸出

通常,第三方函式庫會在執行期間將資訊列印到 stdout。雖然這對於偵錯很有用,但它也會使輸出混亂並擾亂其他進程。要控制此輸出,請考慮利用上下文管理器來捕獲它。

實作

from io import StringIO <br>import sys<p>class Capturing(列表):</p><pre class="brush:php;toolbar:false">def __enter__(self):
    self._stdout = sys.stdout
    sys.stdout = self._stringio = StringIO()
    return self
def __exit__(self, *args):
    self.extend(self._stringio.getvalue().splitlines())
    del self._stringio    # free up some memory
    sys.stdout = self._stdout
登入後複製

class Capturing (列表):

用法
<code class="python">with Capturing() as output:
    do_something(my_object)</code>
登入後複製

捕獲特定程式碼區塊內的輸出:

之後在區塊中,輸出變數將包含列印到stdout 的所有行的清單。
  • 高級技術
  • 多次捕獲:此上下文管理器可以多次使用來累積輸出。
與 contextlib.redirect_stdout() (Python 3.4 ) 整合:這提供了另一種使用 io.StringIO 實作重新導向的方法。

以上是如何使用上下文管理器捕獲 Python 函數的輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板