如何为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中定义结构体的方法
Mar 04 Python
python练习程序批量修改文件名
Jan 16 Python
python实现的阳历转阴历(农历)算法
Apr 25 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
对Python闭包与延迟绑定的方法详解
Jan 07 Python
基于keras 模型、结构、权重保存的实现
Jan 24 Python
Python接口测试get请求过程详解
Feb 28 Python
Python 实现平台类游戏添加跳跃功能
Mar 27 Python
python logging模块的使用
Sep 07 Python
python中yield的用法详解
Jan 13 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 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判断两个浮点数是否相等的方法
2015/03/14 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
jquery禁用右键示例
2014/04/28 Javascript
浅析JS运动
2015/12/28 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
jquery.validate.js 多个相同name的处理方式
2017/07/10 jQuery
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
python实现堆栈与队列的方法
2015/01/15 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
Python中装饰器高级用法详解
2017/12/25 Python
python如何为被装饰的函数保留元数据
2018/03/21 Python
python实现图片筛选程序
2018/10/24 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
Python-opencv 双线性插值实例
2020/01/17 Python
详解Flask前后端分离项目案例
2020/07/24 Python
英国最大的海报商店:GB Posters
2018/03/20 全球购物
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
大学班长的职责
2014/01/27 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
父母对孩子的寄语
2014/04/09 职场文书
《比的意义》教学反思
2016/02/18 职场文书
基于JavaScript实现省市联动效果
2021/06/22 Javascript
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python