22

It would be useful to save the session variables which could be loaded easily into memory at a later stage.

4

5 回答 5

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

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

请注意,这仅存储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。

于 2012-09-20T01:34:06.203 回答
3

寻找类似的东西我遇到了save_ipython_variables

save-ipython-variables让您...轻松将全局 IPython 变量保存到磁盘,并在您再次需要它们时将它们加载回全局命名空间,即使在全新的 IPython 会话中也是如此。

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

于 2013-09-01T20:35:13.790 回答
1

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

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

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

于 2017-03-20T12:01:00.283 回答
1

我还没有尝试过,但从 AE Drew 的回答开始,我找到了一个可能的替代方案。看起来 IPython 有一个内置的魔法命令,称为%store

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

c.StoreMagic.autorestore = True
于 2015-07-20T10:45:28.777 回答
0

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

于 2018-01-06T18:00:41.957 回答