如何为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通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
Python字符串格式化的方法(两种)
Sep 19 Python
PyTorch的深度学习入门之PyTorch安装和配置
Jun 27 Python
Pytorch Tensor基本数学运算详解
Dec 30 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
Django 返回json数据的实现示例
Mar 05 Python
python 星号(*)的多种用途
Sep 21 Python
python 实现弹球游戏的示例代码
Nov 17 Python
pandas 数据类型转换的实现
Dec 29 Python
pytorch实现ResNet结构的实例代码
May 17 Python
Python中request的基本使用解决乱码问题
Apr 12 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使用者状态管理功能的应用
2006/10/09 PHP
一个ubbcode的函数,速度很快.
2006/10/09 PHP
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
使用js 设置url参数
2013/07/08 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
详解js中==与===的区别
2017/01/08 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
回顾Javascript React基础
2019/06/15 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
简单使用webpack打包文件的实现
2019/10/29 Javascript
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
python算法学习之计数排序实例
2013/12/18 Python
Python实现远程调用MetaSploit的方法
2014/08/22 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
python写日志文件操作类与应用示例
2019/07/01 Python
python中数字是否为可变类型
2020/07/08 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
成人大专生实习期的自我评价
2013/10/02 职场文书
纺织工程专业个人求职信范文
2014/01/27 职场文书
法人代表委托书
2014/04/04 职场文书
忠诚与背叛观后感
2015/06/04 职场文书
java设计模式--建造者模式详解
2021/07/21 Java/Android
java设计模式--七大原则详解
2021/07/21 Java/Android
php解析非标准json、非规范json的方式实例
2022/05/10 PHP