我正在尝试保存在文件中打印函数帮助的结果,而不是将它们呈现在 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 的单元格输出中呈现其输出)?
您可以通过将
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 单元输出。