如何在IPython中打印stdout摘录
在Linux终端中,当一个命令的输出内容太长,无法在一页上全部显示时,我可以这样做:
cat file | less
这样我就可以查看并上下滚动这个文件的内容了。
那么在IPython中,我该怎么做呢?
举个例子,我试过这样做,但没有成功:
whos | less
我最开始的问题是,whos
命令的输出太多,无法通过按Shift+Page Up来查看,而且我不想更改滚动缓冲区。
4 个回答
2
在我的IPython(版本7.21)中,管道功能是可以用的,前面要加上!
这个符号。
基本用法:
!cat ~/.vimrc | less
即使在使用Python变量替换时也能正常工作:
# send `some_large_python_str` to pastebin
!echo "{some_large_python_str}" | pastebin
注意在替换的部分{...}
周围要用引号"
。
3
使用分页器应该是自动的。
来自手册:
如果你想把 less 设置为默认的分页器,可以按照以下步骤操作:
- 把环境变量 PAGER 设置为 less。
- 把环境变量 LESS 设置为 -r(还有其他你希望默认传给 less 的选项)。这个设置告诉 less 如何正确处理控制序列,这样才能让你的终端显示颜色信息。
对于 bash 终端,你需要在你的 ~/.bashrc 文件中添加以下内容:
export PAGER=less export LESS=-r
24
在IPython中,你可以使用 %page obj
来显示对象 obj
,这个显示方式会用到你常用的分页工具(通常是 less
)。另外,你也可以增加终端的滚动缓冲区,这样在查看内容时会更方便。
%page obj
-- 以类似IPython默认显示的方式展示对象,输出内容如果太大就会使用分页工具。
%page -r obj
-- 以类似打印的方式展示对象,输出内容如果太大也会使用分页工具。
%page
只能接受简单的名称或属性引用,不能直接计算复杂的表达式,但你可以使用一个临时变量来绕过这个限制。
tmp = ex * pr + ess - ion
%page tmp