加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

IPython – 打印默认值为长变量打印头尾

发布时间:2020-12-20 13:41:40 所属栏目:Python 来源:网络整理
导读:(仅适用于I Python,无论是终端还是QTConsole,而不是Notebook)有没有办法让常规打印语句(是的,2.7)自动打印变量的头部和尾部(甚至只是头部)一些任意大小? 如果我在庞大的pandas数据帧上打印数据帧,pandas会自动打印头部.我希望它也可以在列表和numpy数组上工
(仅适用于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解决第一种情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读