ipython: mencetak riwayat lengkap (bukan hanya sesi saat ini)

128

di ipython, saya dapat menggunakan %histatau %historyuntuk mencetak histori terkini, tetapi ini hanya mencetak histori dari sesi saat ini.

Saya ingin mencetak semua histori, sama seperti historyperintah bash .

Apa yang saya coba lakukan adalah mendapatkan riwayat lengkap, sehingga saya kemudian dapat mencari dengan regex, melihat perintah apa yang diikuti setelah perintah yang ditentukan, dan seterusnya

Berbicara tentang sejarah, bisakah itu juga mencetak kode waktu?

CATATAN SISI : Dalam bash, saya telah menulis skrip sederhana yang mencetak histori dan saya dapat mencarinya untuk kata kunci. Saya melihat saat-saat ketika perintah tertentu dijalankan. Saya dapat menentukan -A natau -B n, di mana nsejumlah baris AFTERatau BEFOREperintah yang diberikan. Ini sangat berguna, karena saya dapat dengan mudah menemukan apa yang saya lakukan kapan, dan apa yang terjadi selanjutnya, ...

Saya mencari yang serupa ipython

pengguna1968963
sumber
8
IPython menyimpan riwayatnya dalam file history.sqlite di ~/.ipython/profile_default/. Di sana Anda akan menemukan tabel: sessions(dengan cap waktu), historydan output_history.
user3557327
1
@ user3557327 - bagaimana saya bisa mengaksesnya dari dalam ipython?
user1968963
1
Saya tidak tahu apakah ipython menampilkan antarmuka untuk itu, tetapi Anda selalu dapat mengaksesnya langsung dengan modul sqlite3 .
user3557327
42
%history -gakan menunjukkan semuanya. -gmencari sejarah, dan jika Anda tidak memberikan pola, Anda mendapatkan segalanya.
Thomas K
36
%history -g -f filenameuntuk menyimpannya ke file.
Liso

Jawaban:

163

Di ipythonmasukkan:

%history -g

Itu tidak mencetak kode waktu tetapi mencetak sesi / nomor baris.

lembu.
sumber
26

Pertama kali digunakan %hist -o -g -f ipython_history.mduntuk menampilkan riwayat (input dan output) ke file teks. ( http://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-history )

Kemudian Anda dapat menggunakan get_session_infofungsi untuk mengingat kembali tanggal dan waktu untuk sesi yang Anda minati. ( 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)

Ini akan mencetak sesuatu seperti

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

Ini berarti bahwa sesi 100 dimulai pada tanggal 13 Februari 2018 19:08:30.

alpha_989
sumber
0

Berikut ekstensi Firefox yang ditemukan @larssend : SQLite Manager

Memiliki GUI untuk membuka file database dan mengeluarkan berbagai perintah sqlite dari menu. Anda mendapatkan bonus tambahan melihat perintah SQL yang menghasilkan output. Ini milik saya untuk ipython saya %historydi ~/.ipython/profile_default/history.sqlite:

masukkan deskripsi gambar di sini

Dan itu bahkan memiliki menu untuk menghasilkan plot (sebar, baris, bar, dll) dari data Anda!

hobs
sumber