如何在不抑制实时打印的情况下捕获 jupyter 单元输出?

How to capture jupyter cell output without supressing live printing?

在 jupyter 中有一个神奇的函数可以捕获和解析单元格的输出:

%%capture capt_out
# cell body that prints interesting stuff every second
# another cell
# code for printing or processing output (i.e for plots):
print(capt_out)

问题是,我需要实时查看输出(因为这是一个 Darknet 模型训练,我需要知道取得了多少进展)然后解析它以根据它创建绘图。

有没有一种简单的方法可以在不抑制打印的情况下捕获输出?

这不是通用解决方案,但适用于我的情况:

!./darknet detector some_parameters 2>&1 | tee some_file.txt

由于我的 jupyter 单元通过 bash 运行二进制文件,我可以简单地使用 tee 命令将输出保存到文件,而无需抑制实时打印。然后我用 python

读取了这个文件
with open(some_file.txt, r) as f:
   text = f.read()

2>&1 将 stderr 重定向到 stdout。