如何为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实现命令行有道词典的方法示例
Jan 31 Python
Python自动化运维_文件内容差异对比分析
Dec 13 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
对python中词典的values值的修改或新增KEY详解
Jan 20 Python
python移位运算的实现
Jul 15 Python
python实现邮件发送功能
Aug 10 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
python的html标准库
Apr 29 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 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实现密保卡功能实现代码<打包下载直接运行>
2011/10/09 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
jQuery如何取id有.的值一般的方法是取不到的
2014/04/18 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
Vue中props的使用详解
2018/06/15 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
python requests 使用快速入门
2017/08/31 Python
Python get获取页面cookie代码实例
2018/09/12 Python
python实现简单flappy bird
2018/12/24 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
详解Flask前后端分离项目案例
2020/07/24 Python
python3中数组逆序输出方法
2020/12/01 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
企业道德讲堂实施方案
2014/03/19 职场文书
环卫工人慰问信
2015/02/15 职场文书
付款证明格式范文
2015/06/19 职场文书
python基于turtle绘制几何图形
2021/06/15 Python
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL