python - IPython %run 忽略打印命令
问题描述
我正在使用几个 Jupyter Notebook 在不同模块之间拆分任务。在我的主笔记本中,我调用另一个模块%run another_module.ipynb
来加载我的所有数据。但是,它还会绘制和打印我在another_module.ipynb中的所有内容。
我想将绘图保留在another_module.ipynb中以帮助我可视化数据,但我不想在调用时重新打印所有内容run another_module.ipynb
。有没有一个选项可以防止打印这个?
谢谢
解决方案
你可以:
- 覆盖该
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
orstderr
管道重定向到/dev/null
:
import os
import sys
sys.stdout = fopen(os.devnull, "w")
%run -i another_module.ipynb
这两种方法都被认为是骇客,只有在您知道后果时才应使用。最好的办法是更改笔记本中的代码,或者添加一个标志来控制日志记录,或者使用一些支持完全关闭日志记录的--verbose
日志记录库(例如)。logging
推荐阅读
- r - ggplot 删除特定的 x 轴标签
- android - 如何在 Android 中以编程方式设置按钮的边距?
- c# - linq groupby 加上选择返回元素类型而不是值
- c# - 将子级添加到列表中的实体框架性能问题
- dynamics-crm - 无法使用 Web API 删除 Dynamics 365 Appointment 的 aboutobjectid 值
- javascript - 使用 customClaims 列出用户的最佳方式
- angular - 如何使用 Angular 材料 7.1.1 在同一页面上实现多个芯片自动完成?
- python-3.x - 对返回语句感到困惑
- batch-file - CLIP 命令无法正常工作
- memory-leaks - 在 Jest 中调试内存泄漏的步骤是什么?