IPython – 打印默认值为长变量打印头尾
(仅适用于I
Python,无论是终端还是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,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解决第一种情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |