这似乎是一个相当简单的问题,但我没有设法使用魔法"%save"正确保存我的ipython会话。 如果我使用魔法"%粘贴"在会话期间的任何时间,将会话结果保存在此输出中:
get_ipython().magic(u'paste')
当然,我希望保存粘贴的代码。
有什么想法吗?
答案 0 :(得分:0)
我可以在Ubuntu上使用ipython 3.1.0版重现这个。
$ ipython
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
Type "copyright", "credits" or "license" for more information.
IPython 3.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: paste
def f(x):
return 2**x
## -- End pasted text --
In [2]: f(4)
Out[2]: 16
In [3]: history
paste
f(4)
history
In [4]: save ptest.py 1-3
The following commands were written to file `ptest.py`:
get_ipython().magic(u'paste ')
f(4)
get_ipython().magic(u'history ')
In [5]: cat ptest.py
# coding: utf-8
get_ipython().magic(u'paste ')
f(4)
get_ipython().magic(u'history ')
In [6]:
但%save
的帮助说明了
此函数使用与输入范围的%history相同的语法, 然后将行保存到您指定的文件名。
这实际上是发生了什么。它只保存您在提示符下键入的命令,并且您输入的命令为paste
,魔术会将其转换为get_ipython().magic(u'paste ')
。
有趣的是,尝试edit
我使用paste
创建的函数会让我vi
盯着相同的魔术命令而不是粘贴的函数。
虽然第一个行为可能不是一个错误(即使它不是特别有帮助),但这种编辑行为肯定是一个。
答案 1 :(得分:0)
正如kdopen所说,如果你使用%save
仅保存您在提示符下键入的命令
如果您想录制%paste
的输入,可以使用%logstart
,在会话期间,您可以停止并开始使用以下内容进行登录:%logoff
/ %logon
以下是有关如何使用此命令的更多信息:logstart
如果要恢复会话,请记住使用以下命令运行ipython:-i yourlogfile.py
命令行选项。即:ipython3 -i ipython_log.py