如何为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动态监控日志内容的示例
Feb 16 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
Python wxPython库消息对话框MessageDialog用法示例
Sep 03 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
python3+PyQt5 实现Rich文本的行编辑方法
Jun 17 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
Django连接数据库并实现读写分离过程解析
Nov 13 Python
Python : turtle色彩控制实例详解
Jan 19 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 Python
Python Request类源码实现方法及原理解析
Aug 17 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 Python
一文搞懂如何实现Go 超时控制
Mar 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
laravel自定义分页效果
2017/07/23 PHP
Laravel 队列使用的实现
2019/01/08 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
JQuery 文本框使用小结
2010/05/22 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
JavaScript知识点整理
2015/12/09 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
Python实现的批量下载RFC文档
2015/03/10 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
python后端接收前端回传的文件方法
2019/01/02 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
Linux的文件类型
2016/07/05 面试题
建筑自我鉴定
2013/10/19 职场文书
食品安全承诺书
2014/05/22 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
Python的property属性详细讲解
2022/04/11 Python