对于历史命令,具体来说,最简单的解决方案是
In [243]: history -t -f history.txt
In [244]: with open('history.txt') as f:
.....: HIST = [l.strip() for l in f]
.....:
In [245]: len(HIST)
Out[245]: 258
In [246]: HIST[-1]
Out[246]: "get_ipython().magic(u'history -t -f history.txt')"
In [247]:
基本上,将其转储到文件中并重新读取。
这可能看起来很杂乱,但我怀疑它来自 IPython 的本质。它实际上不是解释器,而是底层解释器的命令行 shell。我怀疑魔术命令是在 IPython 内部处理的,并且不会通过将命令传递给解释器、捕获输出并将其作为 Out[n] 存储在命令历史记录中的正常路径。所以它不能用于召回和分配。
另一种方法是get_ipython().magic
简单地返回None
。
无论哪种方式,屏幕输出 d=for%history
都不可用。您必须将其转储到文件中。
它似乎因每个魔术命令而异。alias
,例如,确实返回屏幕输出
In [288]: a=%alias
Total number of aliases: 17
In [289]: a
Out[289]:
[('cat', 'cat'),
('clear', 'clear'),
('cp', 'cp'),
('ldir', 'ls -F -G -l %l | grep /$'),
('less', 'less'),
('lf', 'ls -F -l -G %l | grep ^-'),
('lk', 'ls -F -l -G %l | grep ^l'),
('ll', 'ls -F -l -G'),
('ls', 'ls -F -G'),
('lx', 'ls -F -l -G %l | grep ^-..x'),
('man', 'man'),
('mkdir', 'mkdir'),
('more', 'more'),
('mv', 'mv'),
('rm', 'rm'),
('rmdir', 'rmdir'),
(u'show', u'echo')]
In [290]: