Saya sering menemukan diri saya menggunakan juru bahasa Python untuk bekerja dengan database, file, dll - pada dasarnya banyak format manual dari data semi-terstruktur. Saya tidak menyimpan dan membersihkan bit berguna sesering yang saya inginkan. Apakah ada cara untuk menyimpan input saya ke dalam shell (koneksi db, tugas variabel, sedikit untuk loop dan bit logika) - beberapa sejarah sesi interaktif? Jika saya menggunakan sesuatu seperti script
saya terlalu banyak kebisingan stdout. Saya tidak perlu acar semua objek - meskipun jika ada solusi yang melakukan itu, tidak apa-apa. Idealnya saya hanya akan dibiarkan dengan skrip yang berjalan seperti yang saya buat secara interaktif, dan saya hanya bisa menghapus bit yang tidak saya butuhkan. Apakah ada paket yang melakukan ini, atau pendekatan DIY?
PEMBARUAN : Saya sangat kagum dengan kualitas dan kegunaan paket-paket ini. Bagi mereka yang memiliki gatal serupa:
- IPython - seharusnya sudah menggunakan ini sejak lama, semacam apa yang ada dalam pikiran saya
- berinteraksi kembali - sangat mengesankan, saya ingin belajar lebih banyak tentang visualisasi dan ini sepertinya akan bersinar di sana. Semacam aplikasi desktop gtk / gnome yang membuat grafik sebaris. Bayangkan shell hybrid + kalkulator grafik + gerhana mini. Distribusi sumber di sini: http://www.reinteract.org/trac/wiki/GettingIt . Dibangun dengan baik di Ubuntu, terintegrasi ke desktop gnome, Windows dan Mac juga.
- bpython - sangat keren, banyak fitur bagus, autocomplete (!), rewind, satu keystroke save to file, indentation, well done. Distribusi sumber Python, menarik beberapa dependensi dari sourceforge.
Saya sudah bertobat, ini benar-benar memenuhi kebutuhan antara juru bahasa dan editor.
In[48]
). Jadisave filename 1-48
akan menghemat seluruh sesi Anda.%load my_useful_session
http://www.andrewhjon.es/save-interactive-python-session-history
sumber
Ada cara untuk melakukannya. Simpan file di
~/.pystartup
...dan kemudian atur variabel lingkungan
PYTHONSTARTUP
di shell Anda (mis. di~/.bashrc
):Anda juga dapat menambahkan ini untuk mendapatkan pelengkapan otomatis secara gratis:
Harap dicatat bahwa ini hanya akan bekerja pada sistem * nix. Karena readline hanya tersedia di platform Unix.
sumber
readline.parse_and_bind('tab: complete')
berfungsi jika Anda menggunakan MacPorts Python.Jika Anda menggunakan IPython, Anda dapat menyimpan ke file semua perintah Anda sebelumnya menggunakan fungsi sulap % sejarah dengan parameter -f , pe:
sumber
save
sihir. Ini sangat membantu%history -g -f full_history.py
untuk mendapatkan riwayat dari semua sesi, bukan hanya yang saat ini. Lihat juga: dokumentasi untuk% histori .Setelah menginstal Ipython , dan membuka sesi Ipython dengan menjalankan perintah:
dari baris perintah Anda, jalankan saja perintah 'sihir' Ipython berikut untuk secara otomatis mencatat seluruh sesi Ipython Anda:
Ini akan membuat file .py bernama unik dan menyimpan sesi Anda untuk digunakan nanti sebagai sesi Ipython interaktif atau untuk digunakan dalam skrip yang Anda pilih.
sumber
Juga, reinteract memberi Anda antarmuka seperti notebook ke sesi Python.
sumber
reinteract
sekarang digantikan oleh Notebook IPython dan QtConsole.Selain IPython, bpython utilitas serupa memiliki fitur "simpan kode yang Anda masukkan ke file"
sumber
Saya harus berjuang untuk menemukan jawaban, saya sangat baru di lingkungan iPython.
Ini akan bekerja
Jika sesi iPython Anda terlihat seperti ini
Anda ingin menyimpan baris dari 1 hingga 135 kemudian pada sesi ipython yang sama gunakan perintah ini
Ini akan menyimpan semua pernyataan python Anda dalam file test.py di direktori Anda saat ini (tempat Anda memulai ipython).
sumber
Ada% history magic untuk mencetak dan menyimpan histori input (dan opsional output).
Untuk menyimpan sesi Anda saat ini ke file bernama
my_history.py
:History IPython menyimpan perintah yang Anda masukkan, dan hasil yang dihasilkannya. Anda dapat dengan mudah melalui perintah sebelumnya dengan tombol panah atas dan bawah, atau mengakses riwayat Anda dengan cara yang lebih canggih.
Anda dapat menggunakan fungsi% history magic untuk memeriksa input dan output sebelumnya. Input history dari sesi sebelumnya disimpan dalam database, dan IPython dapat dikonfigurasi untuk menyimpan histori output.
Beberapa fungsi ajaib lainnya dapat menggunakan riwayat input Anda, termasuk% edit,% jalankan kembali,% recall,% makro,% save dan% pastebin. Anda dapat menggunakan format standar untuk merujuk ke baris:
Ini akan mengambil baris 3 dan baris 18 hingga 20 dari sesi saat ini, dan baris 1-5 dari sesi sebelumnya.
Lihat% riwayat? untuk Docstring dan lebih banyak contoh.
Juga, pastikan untuk menjelajahi kemampuan % store magic untuk persistensi variabel yang ringan di IPython.
Untuk mengotomatiskan variabel yang disimpan saat startup, tentukan
c.StoreMagic.autorestore = True
di ipython_config.py.sumber
c.HistoryManager.db_log_output
di file konfigurasi.Hanya menempatkan saran lain di mangkuk: Spyder
Ini memiliki log Riwayat dan penjelajah Variabel . Jika Anda telah bekerja dengan MatLab, maka Anda akan melihat kesamaannya.
sumber
Sejauh Linux berjalan, seseorang dapat menggunakan
script
perintah untuk merekam seluruh sesi. Itu adalah bagian dariutil-linux
paket jadi harus pada kebanyakan sistem Linux. Anda dapat membuat dan alias atau fungsi yang akan memanggilscript -c python
dan yang akan disimpan ketypescript
file. Misalnya, inilah cetak ulang satu file seperti itu.Kerugian kecil di sini adalah
script
mencatat semuanya, bahkan umpan baris, kapan pun Anda menekan spasi, dll. Jadi, Anda mungkin ingin menggunakancol
untuk membersihkan output (lihat posting ini di Unix & Linux Stackexchange ).sumber
The
%history
perintah mengagumkan, tapi sayangnya itu tidak akan membiarkan Anda menyimpan hal-hal yang% paste 'd ke sesh itu. Untuk melakukan itu saya pikir Anda harus melakukan%logstart
di awal (walaupun saya belum mengkonfirmasi ini berfungsi).Yang saya suka lakukan adalah
%history -o -n -p -f filename.txt
yang akan menyimpan output, nomor baris, dan '>>>' sebelum setiap input (opsi o, n, dan p). Lihat dokumen untuk% histori di sini .
sumber
ada pilihan lain --- pyslice. dalam "demo dan alat wxpython 2.8 docs", ada program open source bernama "pyslices".
Anda dapat menggunakannya seperti editor, dan juga mendukung penggunaan seperti konsol ---- mengeksekusi setiap baris seperti interpreter interaktif dengan gema langsung.
tentu saja, semua blok kode dan hasil setiap blok akan direkam ke dalam file txt secara otomatis.
hasilnya dicatat tepat di belakang blok kode yang sesuai. sangat mudah.
sumber
Jika Anda menggunakan bpython , semua riwayat perintah secara default disimpan ke
~/.pythonhist
.Untuk menyimpan perintah untuk digunakan kembali nanti, Anda dapat menyalinnya ke file skrip python:
Kemudian edit file itu untuk membersihkannya dan meletakkannya di bawah jalur Python (paket-situs lingkungan global atau virtual, direktori saat ini, disebutkan dalam * .pth, atau cara lain).
Untuk memasukkan perintah ke dalam shell Anda, cukup impor dari file yang disimpan:
sumber
Beberapa komentar bertanya bagaimana cara menyimpan semua input IPython sekaligus. Untuk% save magic di IPython, Anda dapat menyimpan semua perintah secara terprogram seperti yang ditunjukkan di bawah ini, untuk menghindari pesan prompt dan juga untuk menghindari menentukan nomor input. currentLine = len (Dalam) -1% save -f my_session 1- $ currentLine
The
-f
opsi digunakan untuk memaksa penggantian file danlen(IN)-1
menunjukkan input arus yang cepat di IPython, memungkinkan Anda untuk menyimpan seluruh sesi pemrograman.sumber
Bagi mereka yang menggunakan
spacemacs
, danipython
yang datang denganpython-layer
, save magic menciptakan banyak output yang tidak diinginkan, karena perintah penyelesaian otomatis yang bekerja di backround seperti:Untuk menghindari ini, cukup simpan buffer ipython seperti yang biasanya Anda simpan:
spc f s
sumber
Saya ingin menyarankan cara lain untuk mempertahankan sesi python melalui tmux di linux. Anda menjalankan tmux, lampirkan diri Anda ke sesi yang Anda buka (jika tidak dilampirkan setelah membukanya secara langsung). jalankan python dan lakukan apa pun yang Anda lakukan di atasnya. kemudian lepaskan dari sesi. melepaskan diri dari sesi tmux tidak menutup sesi. sesi tetap terbuka.
pro dari metode ini: Anda dapat melampirkan sesi ini dari perangkat lain (jika Anda dapat ssh pc Anda)
kontra dari metode ini: metode ini tidak melepaskan sumber daya yang digunakan oleh sesi python yang dibuka sampai Anda benar-benar ada interpreter python.
sumber
Untuk menyimpan input dan output di XUbuntu :
Terminal
di bilah menu atas dan carisave contents
di dropdownSaya menemukan ini menyimpan input dan output, akan kembali ke ketika saya membuka terminal. Ini bukan ipython khusus, dan akan bekerja dengan sesi ssh atau tugas lain yang dijalankan dari jendela terminal.
sumber