首頁 > 後端開發 > Python教學 > 如何從 Python 函數呼叫捕獲標準輸出?

如何從 Python 函數呼叫捕獲標準輸出?

Susan Sarandon
發布: 2024-11-03 13:20:03
原創
771 人瀏覽過

How to Capture Standard Output from Python Function Calls?

從Python 函數呼叫捕捉標準輸出

當使用修改物件並將統計資訊列印到stdout 的Python 函式庫時,可能需要擷取此輸出以進行進一步分析。然而,直接修改函數來傳回此類資訊可能並不總是可行。

為了解決這個問題,可以使用Capturing 上下文管理器:

<code class="python">from io import StringIO
import sys

class Capturing(list):
    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</code>
登入後複製

可以使用Capturing 上下文管理器如下所示:

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

函數呼叫後,輸出列表將包含函數列印的行。

此技術可以多次應用,結果可以連接:

<code class="python">with Capturing() as output:
    print('hello world')

print('displays on screen')

with Capturing(output) as output:  # note the constructor argument
    print('hello world2')

print('done')
print('output:', output)</code>
登入後複製

輸出:

displays on screen
done
output: ['hello world', 'hello world2']
登入後複製

當無法直接修改do_something() 函數時,此方法提供了一種有效的解決方法來捕捉stdout 輸出。

以上是如何從 Python 函數呼叫捕獲標準輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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