一尘不染

给Python终端一个持久的历史

linux

有没有办法告诉交互式Python Shell在会话之间保留其执行命令的历史?

在会话运行时,执行完命令后,我可以向上箭头访问这些命令,我​​只是想知道是否存在某种方式可以保存一定数量的这些命令,直到下次使用Python Shell时。

这将非常有用,因为我发现自己在上次会话结束时使用的会话中重用了命令。


阅读 269

收藏
2020-06-02

共1个答案

一尘不染

当然可以,只需一个小的启动脚本。从交互式输入编辑及历史替换在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

2020-06-02