如何为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程序设计入门(5)类的使用简介
Jun 16 Python
Python实现字典的key和values的交换
Aug 04 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
浅谈python函数调用返回两个或多个变量的方法
Jan 23 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 Python
Python中的字符串切片(截取字符串)的详解
May 15 Python
创建Django项目图文实例详解
Jun 06 Python
python实现月食效果实例代码
Jun 18 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
python 读写文件包含多种编码格式的解决方式
Dec 20 Python
python使用for...else跳出双层嵌套循环的方法实例
May 17 Python
JAVA SWT事件四种写法实例解析
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
php中处理模拟rewrite 效果
2006/12/09 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
PHP 源代码压缩小工具
2009/12/22 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
移动端(微信等使用vConsole调试console的方法
2019/03/05 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
python基础教程之while循环
2019/08/14 Python
Django--权限Permissions的例子
2019/08/28 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
python中的插入排序的简单用法
2021/01/19 Python
关于 HTML5 的七个传说小结
2012/04/12 HTML / CSS
DataList 能否分页,请问如何实现?
2015/05/03 面试题
十佳护士获奖感言
2014/02/18 职场文书
监察建议书范文
2014/03/12 职场文书
解除合同协议书
2014/04/17 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
会计工作总结范文2014
2014/12/23 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
2015入党个人自传范文
2015/06/26 职场文书