我使用Jupyter Notebook作为C ++代码的python接口。如果我用
启动相同的python代码$ python mycode.py
我可以在终端中看到C ++代码的所有“std :: cout”语句,但如果我执行Jupyter Notebook块,则不会显示所有“cout”。
您知道我是否以及如何在Jupyter笔记本上看到标准输出流?
谢谢!
答案 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)