如何为Python终端提供持久性历史记录


Posted in Python onSeptember 03, 2019

问题

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

当会话正在运行时,在执行命令之后,我可以向上箭头并访问所述命令,我只是想知道是否有某种方法可以保存这些命令,直到下次我使用Python shell时。

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

解决方案

当然你可以用一个小的启动脚本。来自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开始,交互式解释器支持开箱即用的自动完成和历史记录:

现在,在支持的系统上的交互式解释器中默认启用Tab-completion readline。默认情况下也会启用历史记录,并将其写入(并从中读取)文件~/.python-history。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python与R语言的简要对比
Nov 14 Python
Python Socket使用实例
Dec 18 Python
Python 查看list中是否含有某元素的方法
Jun 27 Python
详解django自定义中间件处理
Nov 21 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
May 31 Python
Django获取应用下的所有models的例子
Aug 30 Python
python中matplotlib条件背景颜色的实现
Sep 02 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
Jun 08 Python
高考考python编程是真的吗
Jul 20 Python
Python ConfigParser模块的使用示例
Oct 12 Python
Python实现钉钉/企业微信自动打卡的示例代码
Feb 02 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 #Python
python xlwt如何设置单元格的自定义背景颜色
Sep 03 #Python
python实现静态web服务器
Sep 03 #Python
Python的Lambda函数用法详解
Sep 03 #Python
Python获取一个用户名的组ID过程解析
Sep 03 #Python
python多线程实现TCP服务端
Sep 03 #Python
Python实现多线程/多进程的TCP服务器
Sep 03 #Python
You might like
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
ReactJs快速入门教程(精华版)
2016/11/28 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
JavaScript中的call和apply的用途以及区别
2017/01/11 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
Vue 实现简易多行滚动"弹幕"效果
2020/01/02 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
Django密码存储策略分析
2020/01/09 Python
Python Selenium参数配置方法解析
2020/01/19 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
利用python汇总统计多张Excel
2020/09/22 Python
市场营销专业毕业生自荐信
2013/11/02 职场文书
网站创业计划书
2014/04/30 职场文书
道德之星事迹材料
2014/05/03 职场文书
理想演讲稿范文
2014/05/21 职场文书
食品安全标语
2014/06/07 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby