Jupyter笔记本没有显示C ++输出(cout)

时间:2017-09-06 06:32:35

标签: python c++ jupyter-notebook

我使用Jupyter Notebook作为C ++代码的python接口。如果我用

启动相同的python代码

$ python mycode.py

我可以在终端中看到C ++代码的所有“std :: cout”语句,但如果我执行Jupyter Notebook块,则不会显示所有“cout”。

您知道我是否以及如何在Jupyter笔记本上看到标准输出流?

谢谢!

2 个答案:

答案 0 :(得分:4)

是的,这是一个已知问题。编写Python时,大多数对象都会编写sys.stdout / sys.stderr对象,提供拦截钩子。大多数编译库都不会因为尝试写入sys.stdin / sys.stdout而烦恼,他们只需打开文件描述符并写入它,你就无法拦截它。大多数情况下它可以在底层库中修复,但不是很多人都不愿意报告它。

您将在启动笔记本电脑的终端中看到您的c ++输出。关于如何修复"那,但这不重要。

注意,您可以通过直接编写filedescriptor 1," blah"来重现。将出现在笔记本电脑启动的终端上:

import os
os.write(1, 'blah\n'.encode())

我的终端:

[I 12:13:51.703 LabApp] Adapting to protocol v5.1 for kernel 5cf9f732-5a0e-417d-8b66-bc50d3cbbe80
blah
[I 12:15:51.633 LabApp] Saving file at /Untilted1.ipynb

答案 1 :(得分:0)

如果使用subprocess.check_output()运行程序,则可以将C ++输出显示在jupyter笔记本中。

示例:

a = subprocess.check_output("./your_program")
print(a)