How to save a Python interactive session? How to save a Python interactive session? python python

How to save a Python interactive session?


IPython is extremely useful if you like using interactive sessions. For example for your use-case there is the %save magic command, you just input %save my_useful_session 10-20 23 to save input lines 10 to 20 and 23 to my_useful_session.py (to help with this, every line is prefixed by its number).

Furthermore, the documentation states:

This function uses the same syntax as %history for input ranges, then saves the lines to the filename you specify.

This allows for example, to reference older sessions, such as

%save current_session ~0/%save previous_session ~1/

Look at the videos on the presentation page to get a quick overview of the features.


There is a way to do it. Store the file in ~/.pystartup...

# 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=/home/user/.pystartup" in bash.## Note that PYTHONSTARTUP does *not* expand "~", so you have to put in the# full path to your home directory.import atexitimport osimport readlineimport rlcompleterhistoryPath = 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

and then set the environment variable PYTHONSTARTUP in your shell (e.g. in ~/.bashrc):

export PYTHONSTARTUP=$HOME/.pystartup

You can also add this to get autocomplete for free:

readline.parse_and_bind('tab: complete')

Please note that this will only work on *nix systems. As readline is only available in Unix platform.