如何使用日志记录恢复iPython 0.13.2会话

时间:2013-07-23 15:05:14

标签: python logging ipython

我最近更频繁地使用iPython(0.13.2),并且日志记录似乎是一个很棒的功能 - 如果我可以让它正常工作。

目前,我可以通过ipython --logfile ~/path/fake.log启动和指定日志文件,甚至可以使用%magic命令%logstart ~/path/fake.log在iPython会话中间指定日志文件。

但是,我似乎无法从日志文件中恢复会话,这似乎部分地破坏了目的。我已经搜索过Google和SO,但是在SO或者文档中没有一个推荐的解决方案似乎工作得很好。

我试过了:

    来自Bash的
    • ipython -log ~/path/fake.logsource,结果:[TerminalIPythonApp] Unrecognized flag: '-log'
    • ipython -logplay ~/path/fake.logsource及其他许多人,结果:[TerminalIPythonApp] Unrecognized flag: '-logplay'
    • ipython --logfile=~/path/fake.logsource,结果:新日志已启动,上一次会话中的变量未定义)
  • 来自iPython
    • %logstart ~/path/fake.log appendsource,结果:旧日志继续但未加载,上一个会话中的变量未定义)

两个部分工作(因为他们尝试导入日志文件)但似乎不是为此目的:

  • 来自bash:ipython -i ~/path/fake.logsource,结果:如果会话中没有错误导入并正常工作。如果有任何错误,未导入且变量仍然不可用。记录未恢复。)
  • 来自ipython:%run ~/path/fake.log(没有来源,只是猜测并尝试过。结果:与上面相同。如果没有错误并且变量是GTG则运行文件。如果有错误,则不起作用。不恢复记录。)

iPython 0.13.2中有没有办法恢复有效“从你离开的地方开始”的会话?感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

所有这些保存/恢复会话都可以通过将交互保存为py文件然后尝试在恢复期间运行py文件来工作。如果发生类似未定义变量的错误,则会提示python错误并在那里恢复暂停,但它会恢复存储到错误条件的值。

为避免存储错误情况,请使用How to save a Python interactive session?所选答案中的建议:

save  my_session_name   1-4 6  9

我的会话将在In [1]到In [4]中获取命令并跳过In [5],保存在[6]中,跳过In [7],In [8]并保存在[9]中。这样可以避免违规交互。

稍后恢复会话:

%run my_session_name.py