ipython:打印完整的历史记录(不仅是当前会话)


128

在中ipython,我可以使用%hist%history打印最近的历史记录,但这仅打印当前会话中的历史记录。

我想打印所有历史记录,就像bash history命令一样。

我想要做的是获取完整的历史记录,以便随后可以使用正则表达式进行搜索,查看在指定命令之后跟随了哪些命令,等等。

说到历史,它还能打印时间码吗?

旁注:在bash中,我编写了一个简单的脚本来打印历史记录,并且可以将其grep用作关键字。我看到执行某些命令的时间。我可以指定-A n-B n,其中n行数AFTERBEFORE给定命令在哪里。这非常方便,因为我可以轻松地找到自己在什么时候做过的事情,以及随后发生的事情...

我正在寻找类似的东西 ipython


8
IPython将其历史记录保存在中的history.sqlite文件中~/.ipython/profile_default/。在其中,您会找到表格:(sessions带有时间戳)historyoutput_history
user3557327 2014年

1
@ user3557327-如何从内部访问它ipython
user1968963

1
我不知道ipython是否显示了它的接口,但是您始终可以使用sqlite3模块直接访问它。
user3557327 2014年

42
%history -g将向您展示所有内容。-g搜索历史记录,如果不提供任何模式,则可以获取所有内容。
Thomas K

36
%history -g -f filename将其保存到文件。
Liso 2015年

Answers:


162

ipython输入:

%history -g

它不打印时间代码,但可以打印会话/行号。


26

首先用于%hist -o -g -f ipython_history.md将历史记录(输入和输出)输出到文本文件。(http://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-history

然后你可以使用的get_session_info功能中检索你感兴趣的会议的日期和时间。(http://ipython.readthedocs.io/en/stable/api/generated/IPython.core.history.html?highlight= hist#IPython.core.history.HistoryAccessor.get_session_info

profile_hist=IPython.core.history.HistoryAccessor(profile='default')
profile_hist.get_session_info(100)

这将打印出类似

(100, datetime.datetime(2018, 2, 13, 19, 8, 30, 40691), None, None, '')

这意味着第100场会议于2018年2月13日19:08:30开始。


0

这是@larssend找到的Firefox扩展:SQLite Manager

它具有用于打开数据库文件并从菜单发出各种sqlite命令的GUI。您将获得更多看到生成输出的SQL命令的好处。这是我的ipython我%history~/.ipython/profile_default/history.sqlite

在此处输入图片说明

它甚至还具有一个菜单,用于从您的数据生成图(散点图,线图,条形图等)!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.