(仅适用于IPython,无论是终端还是QTConsole,而不是Notebook)有没有办法让常规打印语句(是的,2.7)自动打印变量的头部和尾部(甚至只是头部)一些任意大小?
如果我在庞大的pandas数据帧上打印数据帧,pandas会自动打印头部.我希望它也可以在列表和numpy数组上工作,这样下次我不小心意外地打印出一个巨大的数组时,我不会得到100页的数字. (我确信我可以编写一个函数来执行此操作,但我反复使用print,所以我想知道是否有办法控制IPython将显示多少 – 实际上,我宁愿改变控制台显示的内容而不是该计划正在做什么.)
解决方法:
你不能用print语句做很多事情,但你可以对ipython的输出做些什么,考虑这些命令:
In [13]: x = range(3)
In [14]: x
Out[14]: [0, 1, 2]
In [15]: print x
[0, 1, 2]
首先,x将[14]赋值给表达式的值,然后显示Out [14].
你可以破解ipython以不同的方式显示它.据我所知,ipython内部使用pprint或其副本.简单的猴子修补pprint.pprint / pprint.pformat / pprint.PrettyPrinter虽然不起作用.你需要适当地破解ipython.
其次,print x直接进入Python的核心.在python 2.x中,你不能改变打印的作用.在python 3.x中,print()只是一个函数,你可以对其进行修补.
如果您打印的是您自己类的对象,请随意重新定义__str__和__repr__,如numpy所做的那样:
numpy.set_printoptions(threshold=2)
numpy.array(range(10)).__str__()
'[0 1 2 ..., 7 8 9]'
print numpy.array(range(10))
[0 1 2 ..., 7 8 9]
最后,ipython附带%page magic命令,您可以发出%page x,如果x的表示足够大,您将被删除到较少或类似的寻呼机,您可以一次查看一页的此文本表示.
附: ipython可以通过“traits”进行扩展,它对我来说仍然是魔法,但也许你可以使用traits解决第一种情况.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。