如果我使用魔术%粘贴,如何保存ipython会话? (魔法%保存不起作用)

时间:2015-04-30 12:40:57

标签: python session save ipython ipython-magic

这似乎是一个相当简单的问题,但我没有设法使用魔法"%save"正确保存我的ipython会话。 如果我使用魔法"%粘贴"在会话期间的任何时间,将会话结果保存在此输出中:

get_ipython().magic(u'paste')

当然,我希望保存粘贴的代码。

有什么想法吗?

2 个答案:

答案 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