如何为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正则表达式实现截取成对括号的方法
Jan 06 Python
Python利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
python机器学习实战之K均值聚类
Dec 20 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
Python离线安装PIL 模块的方法
Jan 08 Python
梅尔频率倒谱系数(mfcc)及Python实现
Jun 18 Python
python中对数据进行各种排序的方法
Jul 02 Python
Pycharm简单使用教程(入门小结)
Jul 04 Python
区分python中的进程与线程
Aug 13 Python
在pycharm创建scrapy项目的实现步骤
Dec 01 Python
用python-webdriver实现自动填表的示例代码
Jan 13 Python
Python异常类型以及处理方法汇总
Jun 05 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
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
javascript 写类方式之五
2009/07/05 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
微信小程序中的swiper组件详解
2017/04/14 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
python3爬取torrent种子链接实例
2020/01/16 Python
Tensorflow:转置函数 transpose的使用详解
2020/02/11 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
pygame实现弹球游戏
2020/04/14 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
2014年个人委托书范本
2014/10/13 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
浅谈Python数学建模之线性规划
2021/06/23 Python
Java8中接口的新特性使用指南
2021/11/01 Java/Android
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers