インタラクティブなPythonシェルに、セッション間で実行されたコマンドの履歴を保持するように指示する方法はありますか?
セッションの実行中に、コマンドが実行された後、上向き矢印を使用して上記のコマンドにアクセスできます。次にPythonシェル。
前回のセッションの最後に使用したコマンドをセッションで再利用しているので、これは非常に便利です。
確かに、小さな起動スクリプトでできます。 From インタラクティブな入力編集と履歴の置換 pythonチュートリアル:
# 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
Python 3.4以降、 インタラクティブインタプリタはオートコンプリートと履歴をすぐにサポートします :
readline
をサポートするシステムのインタラクティブインタプリタで、タブ補完がデフォルトで有効になりました。履歴もデフォルトで有効になっており、ファイルに書き込まれます(そしてファイルから読み取られます)~/.python-history
。
IPython を使用します。
とにかく、それは素晴らしいので、あなたはすべきです:永続的なコマンド履歴は、ストックPythonシェルよりも優れている多くの方法の1つにすぎません。
これは、Python 3 仮想環境 を使用する場合にも必要です。
仮想環境ごとに履歴ファイルを保持するわずかに異なるバージョンを使用します。
import sys
if sys.version_info >= (3, 0) and hasattr(sys, 'real_prefix'): # in a VirtualEnv
import atexit, os, readline, sys
PYTHON_HISTORY_FILE = os.path.join(os.environ['VIRTUAL_ENV'], '.python_history')
if os.path.exists(PYTHON_HISTORY_FILE):
readline.read_history_file(PYTHON_HISTORY_FILE)
atexit.register(readline.write_history_file, PYTHON_HISTORY_FILE)