如何在IPython中禁用Out[]输出但保留print语句的打印内容?
解决方法
要抑制Out[1]形式的Figure输出但保留print的内容,核心是阻止IPython显示代码块最后一个表达式的返回值(这里就是plt.figure()返回的Figure对象),有两种简单的实现方式:
方法一:在执行代码的末尾添加分号
修改你定义的code字符串,在plt.figure()后面加上分号;,IPython遇到分号就会自动抑制该行表达式的返回值输出,而print的内容不受影响:
from IPython import get_ipython ipython = get_ipython() code = """ import matplotlib.pyplot as plt print("bla") plt.figure(); # 加个分号抑制返回值显示 """ res = ipython.run_cell(code)
执行后只会打印出bla,不会再出现Out[1]: <Figure ...>的输出。
方法二:让代码块最后返回None
如果不想加分号,也可以在代码块最后加一行None,这样最后一个表达式的返回值是None,IPython默认不会显示None的输出:
code = """ import matplotlib.pyplot as plt print("bla") plt.figure() None # 用None作为最后一行,抑制输出 """ res = ipython.run_cell(code)
原理说明
IPython的交互模式下,默认会显示代码块最后一个表达式的返回值(除非该表达式是赋值语句或者末尾有分号)。你之前的代码里,plt.figure()会返回一个Figure对象,这个对象就被IPython当作输出显示为Out[1]。而print("bla")是直接向标准输出(stdout)打印内容,和表达式返回值的输出是两个独立的机制,所以上面的方法只会抑制后者,不会影响前者。
内容的提问来源于stack exchange,提问作者Zorglub29
相关产品推荐
相关产品推荐

