有没有办法在ipython中使用"less"视图python输出

Hon*_*hen 2 python pipe ipython

ipython中有一个魔术%less可以启用常规shell less命令.所以我们可以使用

less fname
Run Code Online (Sandbox Code Playgroud)

要么

%less fname
Run Code Online (Sandbox Code Playgroud)

看到fname的内容.即使是美妙的事情,我们也可以使用

cat fname | less
Run Code Online (Sandbox Code Playgroud)

要么

%cat fname | less
Run Code Online (Sandbox Code Playgroud)

不是(!!!) cat fname | %less%cat fname | %less.

在ipython中也是如此!

遗憾的是,我发现对于非魔术python函数,输出似乎不能与管道一起使用.例如,以下都不起作用.

print(os.environ.keys()) | %less
print(os.environ.keys()) | less
echo os.environ.keys() | %less
echo os.environ.keys() | less
os.environ.keys() | %less
os.environ.keys() | less
Run Code Online (Sandbox Code Playgroud)

有办法解决这个问题吗?


对不起,我没有仔细搜索过,因为已经回答了2个类似的问题.

加:如果有人告诉魔术版的奇怪行为%non-%存在"|",我将不胜感激.我想这也有答案,但我很难用正确的关键词进行搜索.

unu*_*tbu 7

In [21]: x = os.environ.keys()
In [22]: %page x
Run Code Online (Sandbox Code Playgroud)

%magic通过在输出中键入并向后搜索字符串"page" 来找到这一点.


当字符串等%less,%page,%cat,或%ls出现在开始的命令,它被视为由IPython的一个魔术功能.请注意,如果您已automagic启用,则无需%为行魔术明确键入; 这就是为什么less行为可能与%less在命令开头输入时的行为相同.

当魔术函数没有出现在命令的开头时,该命令将被传递给Python并像常规Python代码一样处理.

在Python中|按位或运算符.

%调用__mod__特殊方法.