セッション間で実行されたコマンドの履歴を保持するようにインタラクティブなPythonシェルに指示する方法はありますか?
セッションの実行中、コマンドが実行された後、上向き矢印を使用して上記のコマンドにアクセスできます。次にPythonシェルを使用するまで、これらのコマンドの特定の数を保存する方法があるかどうか疑問に思っています。 。
前回のセッションの最後に使用したコマンドをセッションで再利用しているので、これは非常に便利です。
セッション間で実行されたコマンドの履歴を保持するようにインタラクティブなPythonシェルに指示する方法はありますか?
セッションの実行中、コマンドが実行された後、上向き矢印を使用して上記のコマンドにアクセスできます。次にPythonシェルを使用するまで、これらのコマンドの特定の数を保存する方法があるかどうか疑問に思っています。 。
前回のセッションの最後に使用したコマンドをセッションで再利用しているので、これは非常に便利です。
確かに、小さな起動スクリプトでできます。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つにすぎません。
これは、仮想環境を使用するPython3でも必要です。
仮想環境ごとに履歴ファイルを保持するわずかに異なるバージョンを使用します。
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)