如何为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利用hook技术破解https的实例代码
Mar 25 Python
Python动态加载模块的3种方法
Nov 22 Python
使用Python实现下载网易云音乐的高清MV
Mar 16 Python
在Django中创建第一个静态视图
Jul 15 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 Python
NumPy.npy与pandas DataFrame的实例讲解
Jul 09 Python
python获取中文字符串长度的方法
Nov 14 Python
彻底理解Python中的yield关键字
Apr 01 Python
Django时区详解
Jul 24 Python
python通过matplotlib生成复合饼图
Feb 06 Python
selenium如何定位span元素的实现
Jan 13 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 fprintf()函数用法讲解
2019/02/16 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
ES6 Class中实现私有属性的一些方法总结
2019/07/08 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
python 杀死自身进程的实现方法
2019/07/01 Python
使用Python函数进行模块化的实现
2019/11/15 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
接口的多继承会带来哪些问题
2015/08/17 面试题
商务专员岗位职责
2013/11/23 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
矿泉水广告词
2014/03/20 职场文书
村级个人对照检查材料
2014/08/22 职场文书
单位委托书格式范本
2014/09/29 职场文书
个人廉洁自律总结
2015/03/06 职场文书
离婚纠纷代理词
2015/05/23 职场文书
python中mongodb包操作数据库
2022/04/19 Python