當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python contextlib.redirect_stdout用法及代碼示例


用法:

contextlib.redirect_stdout(new_target)

用於臨時將sys.stdout 重定向到另一個文件或file-like 對象的上下文管理器。

該工具為輸出硬連線到標準輸出的現有函數或類增加了靈活性。

例如,help() 的輸出通常被發送到 sys.stdout 。您可以通過將輸出重定向到io.StringIO 對象來捕獲字符串中的輸出。替換流從 __enter__ 方法返回,因此可用作 with 語句的目標:

with redirect_stdout(io.StringIO()) as f:
    help(pow)
s = f.getvalue()

要將help() 的輸出發送到磁盤上的文件,請將輸出重定向到常規文件:

with open('help.txt', 'w') as f:
    with redirect_stdout(f):
        help(pow)

要將 help() 的輸出發送到 sys.stderr

with redirect_stdout(sys.stderr):
    help(pow)

請注意,sys.stdout 的全局副作用意味著此上下文管理器不適合在庫代碼和大多數線程應用程序中使用。它對子流程的輸出也沒有影響。但是,對於許多實用程序腳本來說,它仍然是一種有用的方法。

這個上下文管理器是可重入的。

3.4 版中的新函數。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 contextlib.redirect_stdout。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。