Give the Python Terminal a Persistent History

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.

Answers


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.


Need Your Help

convert html table with various kind of condition to Json

javascript jquery html json

I am stuck to generate the JSON based on the HTML below

IOS safari : clipping of iframe when using transform3d

javascript iframe css3 iphone mobile-webkit

People have found a means by which to make a div scrollable on ios devices using css transforms.

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.