対話シェルを閉じた後でも永続履歴を保持するようにCMD module from Pythonを設定する方法はありますか?python cmdモジュールの永続履歴
私が上下のキーを押したとき、前回シェルで入力したコマンドにアクセスしたいと思います。このセッション中に入力したものだけでなく、Pythonスクリプトも実行しました。
その任意のヘルプcmdがreadline module
対話シェルを閉じた後でも永続履歴を保持するようにCMD module from Pythonを設定する方法はありますか?python cmdモジュールの永続履歴
私が上下のキーを押したとき、前回シェルで入力したコマンドにアクセスしたいと思います。このセッション中に入力したものだけでなく、Pythonスクリプトも実行しました。
その任意のヘルプcmdがreadline module
readline
から輸入set_completer
を使用している場合は、自動的にあなたが入力したすべての履歴を保持。追加する必要があるのは、その履歴をロードして保存するためのフックだけです。
readline.read_history_file(filename)
を使用して履歴ファイルを読み取ります。これまでに履歴を保持するようにreadline
に伝えるには、readline.write_history_file()
を使用してください。あなたは際限なく成長しているから、このファイルを保つためにreadline.set_history_length()
を使用することもできます。
import os.path
try:
import readline
except ImportError:
readline = None
histfile = os.path.expanduser('~/.someconsole_history')
histfile_size = 1000
class SomeConsole(cmd.Cmd):
def preloop(self):
if readline and os.path.exists(histfile):
readline.read_history_file(histfile)
def postloop(self):
if readline:
readline.set_history_length(histfile_size)
readline.write_history_file(histfile)
私はロードをトリガするCmd.preloop()
とCmd.postloop()
フックを使用して、コマンドループが開始および終了ポイントに保存します。
readline
がインストールされていない場合は、precmd()
methodを追加して、これをシミュレーションして、入力したコマンドを自分で記録することができます。
返信いただきありがとうございますので、既存の履歴リスト機能を変更して、私がしたいことはありませんか? – PJConnol
@PJConnol: 'readline'ライブラリは補完機能のためにのみ使用されます。私は、(グローバルな)歴史のreadlineがここで役割を果たしているとは思いません。 –
もう一度、大丈夫ですよ、ありがとう – PJConnol