如何恢复 Google Colab 中的默认输出(单元格输出)?将 sys.stdout 重新分配给 sys.__stdout__ 似乎不起作用

问题描述 投票:0回答:1

我正在尝试保存在文件中打印函数帮助的结果,而不是将它们呈现在 Google Colab 中的单元格输出上。

我的代码如下:

import sys
import io

def capture_help_to_buffer(obj):
    output_buffer = io.StringIO()
    sys.stdout = output_buffer

    try:
        help(obj)
    except:
        pass

    sys.stdout = sys.__stdout__
    return output_buffer.getvalue()

# Example usage
help_output = capture_help_to_buffer(list)
print(help_output)

我的问题是:运行此代码后,

print
开始不返回任何内容。换句话说:似乎将
sys.stdout
重新分配到其所谓的默认值 (
sys.__stdout__
) 不起作用。

我的问题:我应该重新分配

sys.stdout
到什么值,以便
print
将恢复到其正常行为(在 Google Colab 的单元格输出中呈现其输出)?

python io printf google-colaboratory stdout
1个回答
0
投票

您可以通过将

sys.stdout
保存到变量并在退出函数后恢复回来来解决此问题,如下所示:

def capture_help_to_buffer(obj):
    # save the original stdout
    old_stdout = sys.stdout
    output_buffer = io.StringIO()
    sys.stdout = output_buffer

    try:
        help(obj)
    except:
        pass

    # revert to original stdout
    sys.stdout = old_stdout
    return output_buffer.getvalue()

sys.stdout
重新分配给
old_stdout
后,
print(help_output)
应再次写入正常的 Colab 单元输出。

© www.soinside.com 2019 - 2024. All rights reserved.