ipython: in lịch sử đầy đủ (không chỉ phiên hiện tại)


128

trong ipython, tôi có thể sử dụng %histhoặc %historyđể in lịch sử gần đây, nhưng điều này chỉ in lịch sử từ phiên hiện tại.

Tôi muốn in tất cả lịch sử, tương tự như historylệnh bash .

Những gì tôi đang cố gắng làm là để có được lịch sử đầy đủ, sau đó tôi có thể tìm kiếm bằng regex, xem những lệnh nào được theo sau các lệnh được chỉ định, v.v.

Nói về lịch sử, nó cũng có thể in mã thời gian?

GHI CHÚ : Trong bash, tôi đã viết một tập lệnh đơn giản in lịch sử và tôi có thể grep nó cho các từ khóa. Tôi thấy thời gian khi các lệnh nhất định được thực thi. Tôi có thể chỉ định -A nhoặc -B n, nmột số dòng AFTERhoặc BEFOREmột lệnh đã cho. Điều này rất tiện dụng, bởi vì tôi có thể dễ dàng tìm thấy những gì tôi đã làm khi nào và những gì tiếp theo, ...

Tôi đang tìm kiếm một cái gì đó tương tự cho ipython


8
IPython lưu lịch sử của nó trong một tệp history.sqlite ~/.ipython/profile_default/. Trong đó bạn sẽ tìm thấy các bảng: sessions(có dấu thời gian) historyoutput_history.
dùng3557327

1
@ user3557327 - Làm thế nào tôi có thể truy cập nó từ bên trong ipython?
dùng1968963

1
Tôi không biết nếu ipython hiển thị giao diện cho nó, nhưng bạn luôn có thể truy cập trực tiếp vào mô-đun sqlite3 .
dùng3557327

42
%history -gsẽ cho bạn thấy tất cả của nó. -gtìm kiếm lịch sử và nếu bạn không có mẫu nào, bạn sẽ có mọi thứ.
Thomas K

36
%history -g -f filenameđể lưu nó vào tập tin.
Liso

Câu trả lời:


163

Trong ipythonnhập:

%history -g

Nó không in mã thời gian nhưng nó in số phiên / số dòng.


26

Đầu tiên sử dụng %hist -o -g -f ipython_history.mdđể xuất lịch sử (đầu vào và đầu ra) vào một tệp văn bản. ( http://ipython.readthedocs.io/en/urdy/interactive/magics.html#magic-history )

Sau đó, bạn có thể sử dụng get_session_infochức năng này để truy xuất ngày và thời gian cho phiên bạn quan tâm. ( Http://ipython.readthedocs.io/en/ sóng / api / generic /IPython.core.history.html? Highlight = lịch sử # IPython.core.history.HistoryAccessor.get_session_info )

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

Điều này sẽ in ra một cái gì đó như

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

Điều này có nghĩa là phiên 100 bắt đầu vào ngày 13 tháng 2 năm 2018 19:08:30.


0

Đây là tiện ích mở rộng Firefox mà @larssend tìm thấy: Trình quản lý SQLite

Nó có GUI để mở tệp cơ sở dữ liệu và ban hành các lệnh sqlite khác nhau từ menu. Bạn nhận được phần thưởng bổ sung khi thấy các lệnh SQL đã tạo đầu ra. Đây là của tôi cho ipython của tôi %historytrong ~/.ipython/profile_default/history.sqlite:

nhập mô tả hình ảnh ở đây

Và nó thậm chí còn có một menu để tạo các ô (phân tán, dòng, thanh, v.v.) từ dữ liệu của bạn!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.