我正在使用多个Jupyter笔记本在不同模块之间分配任务。在我的主笔记本中,我调用了另一个模块%run another_module.ipynb
来加载我的所有数据。但是,它还会绘制并打印我在 another_module.ipynb 中拥有的所有内容。
我想将图保留在 another_module.ipynb 中,以帮助我可视化数据,但我不想在调用run another_module.ipynb
时重印所有内容。是否有防止这种伪装的选项?
谢谢
答案 0 :(得分:0)
您可以:
print
函数并将其设置为无操作:_print_function = print # create a backup in case you need it later
globals()["print"] = lambda *args, **kwargs: None
-i
标志运行文件。如果没有-i
,该文件将在新的命名空间中运行,因此对全局变量的修改将丢失;使用-i
,文件将在当前名称空间中运行。%run -i another_module.ipynb
如果您使用其他方法来打印日志(例如sys.stdout.write()
,logging
),则很难为它们创建模拟。在这种情况下,我建议将stdout
或stderr
管道重定向到/dev/null
:
import os
import sys
sys.stdout = fopen(os.devnull, "w")
%run -i another_module.ipynb
这两种方法都被认为是骇客行为,仅当您知道后果时才应使用。最好的做法是更改笔记本中的代码,或者添加--verbose
标志来控制日志记录,或者使用某些日志记录库(例如logging
)来支持完全关闭日志记录。