如何为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 相关文章推荐
在SAE上部署Python的Django框架的一些问题汇总
May 30 Python
Python 闭包的使用方法
Sep 07 Python
Sanic框架蓝图用法实例分析
Jul 17 Python
python单例模式实例解析
Aug 28 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
Python编程flask使用页面模版的方法
Dec 28 Python
对python调用RPC接口的实例详解
Jan 03 Python
Python queue队列原理与应用案例分析
Sep 27 Python
查看端口并杀进程python脚本代码
Dec 17 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
Feb 15 Python
Python气泡提示与标签的实现
Apr 01 Python
Python开发五子棋小游戏
May 02 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计算两个路径的相对路径
2013/06/14 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
js如何打印object对象
2015/10/16 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
Python中的元类编程入门指引
2015/04/15 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
opencv实现图像平移效果
2021/03/24 Python
表彰先进的通报
2014/01/31 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
竞争上岗实施方案
2014/03/21 职场文书
安全施工标语
2014/06/07 职场文书
Mysql排序的特性详情
2021/11/01 MySQL