由于某些其他原因,我使用的c ++共享库将一些文本输出到标准输出.在python中,我想捕获输出并保存到变量.关于重定向标准输出有许多类似的问题,但在我的代码中不起作用.
示例:禁止在库外调用模块的输出
1 import sys
2 import cStringIO
3 save_stdout = sys.stdout
4 sys.stdout = cStringIO.StringIO()
5 func()
6 sys.stdout = save_stdout
Run Code Online (Sandbox Code Playgroud)
在第5行,func()将调用共享库,共享库生成的文本仍然输出到控制台!如果改变func()打印"你好",它的工作原理!
我的问题是:
以下代码不会给出任何错误,但也不会打印张量.
import tensorflow as tf
import numpy as np
# Some tensor we want to print the value of
x = tf.placeholder(tf.float32, shape=[2, 2, 2])
a = np.array([[[1.,1.], [1.,1.]], [[2.,2.], [2.,2.]]])
m = tf.Print(x,[x])
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
m_eval = m.eval(session=sess,feed_dict={x: a})
Run Code Online (Sandbox Code Playgroud)
编辑:在bgshi的回复之后,我发现在iPython控制台中,代码确实打印了张量值.但我正在使用iPython笔记本.有没有办法让它显示在笔记本上?