如何为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获取操作系统信息实例
Sep 02 Python
Python入门_学会创建并调用函数的方法
May 16 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
python微信公众号开发简单流程
Mar 23 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
python自动化工具之pywinauto实例详解
Aug 26 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
基于Python生成个性二维码过程详解
Mar 05 Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 Python
如何写python的配置文件
Jun 07 Python
python读取图像矩阵文件并转换为向量实例
Jun 18 Python
Python+unittest+DDT实现数据驱动测试
Nov 30 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
tp5框架的增删改查操作示例
2019/10/31 PHP
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
Vue 父子组件、组件间通信
2017/03/08 Javascript
Textarea输入字数限制实例(兼容iOS&安卓)
2017/07/06 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
javascript History对象原理解析
2020/02/17 Javascript
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
python+selenium实现京东自动登录及秒杀功能
2017/11/18 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
Python 中Operator模块的使用
2021/01/30 Python
Pat McGrath Labs官网:世界上最有影响力的化妆师推出的彩妆品牌
2018/01/07 全球购物
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
个人找工作自荐信格式
2013/09/21 职场文书
庆祝教师节活动方案
2014/01/31 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
初婚未育证明样本
2015/06/18 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
校长新学期寄语2016
2015/12/04 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL