像在MATLAB中一样在IPython中保存会话?

时间:2012-09-20 01:20:20

标签: python ipython pandas

保存可以在以后阶段轻松加载到内存中的会话变量会很有用。

5 个答案:

答案 0 :(得分:13)

In [23]: %logstart /tmp/session.log
Activating auto-logging. Current session state plus future input saved.
Filename       : /tmp/session.log
Mode           : backup
Output logging : False
Raw input log  : False
Timestamping   : False
State          : active

In [24]: x = 1

In [25]: %logstop

In [26]: quit()
Do you really want to exit ([y]/n)? y

然后我们可以使用以下命令恢复会话:

% ipython -log /tmp/session.log 
Activating auto-logging. Current session state plus future input saved.
Filename       : ipython_log.py
...

In [1]: x
Out[1]: 1

有关“会话记录和恢复”的更多信息,请参阅the docs

请注意,这仅存储由IPython运行的命令。它没有保存 IPython会话的状态。恢复会话需要重新执行 命令。


如果您将PYTHONSTARTUP环境变量设置为指向名为startup.py的文件:

PYTHONSTARTUP=/path/to/startup.py

然后将以下内容放在/path/to/startup.py中:

try:
    # https://stackoverflow.com/a/5377051/190597 (Tom Dunham)
    __IPYTHON__
except NameError:
    pass
else:
    # https://stackoverflow.com/a/15898875/190597 (user2261139)
    from IPython import get_ipython
    ipython = get_ipython()
    ipython.magic("%logstart /tmp/session.log")

然后,每当您启动交互式会话时,IPython都会自动调用%logstart。

答案 1 :(得分:3)

寻找类似我遇到的save_ipython_variables

  

save-ipython-variables可让您...保存您的全球IPython   容易变量到磁盘,并将它们加载回全局   当你再次需要它们时,甚至在一个全新的IPython中   会话。

我还没有太多机会使用它,但看起来很有希望。

答案 2 :(得分:1)

我还没试过,但是从AE Drew的回答开始,我找到了一个可能的选择。看起来IPython有一个内置的魔术命令,可以执行这个命令%store

  

%存储轻量级持久性的魔力。在IPython的数据库中存储变量,别名和宏。要在启动时自动恢复存储的变量,请将其添加到ipython_config.py文件中:

c.StoreMagic.autorestore = True

答案 3 :(得分:1)

还有一个魔术命令history,可用于编写用户提供的所有命令/语句。

语法:%history -f file_name。 另外%save file_name start_line-end_line,其中star_line是起始行号,end_line是结束行号。在选择性保存的情况下很有用。

%run可用于执行保存文件中的命令

答案 4 :(得分:0)

不是我的解决方案,但如果您使用ipython,这似乎是最接近的解决方案:https://stackoverflow.com/a/28552465/4752883