Is there a way to tell the interactive Python shell to preserve its history of executed commands between sessions?
While a session is running, after commands have been executed, I can arrow up and access said commands, I'm just wondering if there is some way for a certain number of these commands to be saved until the next time I use the Python shell.
This would be very useful since I find myself reusing commands in a session, that I used at the end of the last session.
The History Log is stored in the . spyder-py3 (Python 3) or spyder (Python 2) directory in your user home folder (by default, C:/Users/username on Windows, /Users/username for macOS, and typically /home/username on GNU/Linux).
The history() function above has an optional parameter to specify a maximum number of lines to be printed. If no argument is received, history() will print all commands given at the start of the session.
Alt + p for previous command from histroy, Alt + n for next command from history. This is default configure, and you can change these key shortcut at your preference from Options -> Configure IDLE.
Sure you can, with a small startup script. From Interactive Input Editing and History Substitution in the python tutorial:
# Add auto-completion and a stored history file of commands to your Python # interactive interpreter. Requires Python 2.0+, readline. Autocomplete is # bound to the Esc key by default (you can change it - see readline docs). # # Store the file in ~/.pystartup, and set an environment variable to point # to it: "export PYTHONSTARTUP=~/.pystartup" in bash. import atexit import os import readline import rlcompleter historyPath = os.path.expanduser("~/.pyhistory") def save_history(historyPath=historyPath): import readline readline.write_history_file(historyPath) if os.path.exists(historyPath): readline.read_history_file(historyPath) atexit.register(save_history) del os, atexit, readline, rlcompleter, save_history, historyPath
From Python 3.4 onwards, the interactive interpreter supports autocompletion and history out of the box:
Tab-completion is now enabled by default in the interactive interpreter on systems that support
readline
. History is also enabled by default, and is written to (and read from) the file~/.python-history
.
Use IPython.
You should, anyway, because it's awesome: persistent command history is just one of the many many ways it's better than the stock Python shell.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With