是否有任何方法可以从 Python 配置 CMD 模块以保持持久的历史记录,即使在交互式 shell 关闭后也是如此?
当我按下向上和向下键时,我想访问以前在运行 python 脚本的情况下输入到 shell 中的命令以及我在此会话期间刚刚输入的命令。
如果它有任何帮助 cmd 使用set_completer
从readline 模块导入的
是否有任何方法可以从 Python 配置 CMD 模块以保持持久的历史记录,即使在交互式 shell 关闭后也是如此?
当我按下向上和向下键时,我想访问以前在运行 python 脚本的情况下输入到 shell 中的命令以及我在此会话期间刚刚输入的命令。
如果它有任何帮助 cmd 使用set_completer
从readline 模块导入的
readline
自动保留您输入的所有内容的历史记录。您需要添加的只是加载和存储该历史记录的挂钩。
用于readline.read_history_file(filename)
读取历史文件。用于readline.write_history_file()
告诉readline
保持迄今为止的历史。您可能希望使用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()
andCmd.postloop()
钩子触发加载和保存到命令循环开始和结束的点。
如果你还没有readline
安装,你仍然可以通过添加一个precmd()
方法来模拟这个,并自己记录输入的命令。