如何为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 daemon守护进程实现
Aug 27 Python
Python实现ssh批量登录并执行命令
Oct 25 Python
python通过getopt模块如何获取执行的命令参数详解
Dec 29 Python
使用python和Django完成博客数据库的迁移方法
Jan 05 Python
Python使用Tkinter实现机器人走迷宫
Jan 22 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
python3下载抖音视频的完整代码
Jun 05 Python
基于Python实现视频的人脸融合功能
Jun 12 Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 Python
python递归函数用法详解
Oct 26 Python
Python的三个重要函数详解
Jan 18 Python
Python图像处理库PIL详细使用说明
Apr 06 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计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
popdiv
2006/07/14 Javascript
javascript Prototype 对象扩展
2009/05/15 Javascript
extjs 04_grid 单击事件新发现
2012/11/27 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
jQuery实现增删改查
2020/12/22 jQuery
python制作最美应用的爬虫
2015/10/28 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
python+opencv识别图片中的圆形
2020/03/25 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
python numpy中cumsum的用法详解
2019/10/17 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
pycharm永久激活超详细教程
2020/10/29 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
领导工作表现评语
2015/01/04 职场文书
道德与公民自我评价
2015/03/09 职场文书
教师思想工作总结2015
2015/05/13 职场文书
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS