如何为Python终端提供持久性历史记录

问题

有没有办法告诉交互式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。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python 执行终端/控制台命令的例子

    如下所示: import os os.system() os.popen().read().strip() #上面2种方法 是python 执行终端/控制台 命令的常见方法 #os.system('ping www.baidu.com') 执行成功 返回 0 #ping = os.popen('pint www.baidu.com').read().strip() 返回输出结果 #注:os.system() 执行完成 会关闭 所以当执行后续 命令需要依赖前面的命令时,请将多条命令写到一个 os.

  • 浅谈终端直接执行py文件,不需要python命令

    然后给脚本文件运行权限, 方法(1)chmod +x ./*.py 方法(2)chmod 755 ./*.py (777也无所谓啦) 这个命令不去调整,会出现permission denied的错误 终端直接执行. 如果在脚本内容的开头已经给出了类似于如下的注释: #!/usr/bin/env python(或者是 #!/usr/bin/python) 那就可以直接在终端里运行: ./*.py 如果没有这个注释 就在终端中执行: python ./*.py (注意:有些linux版本上运行即使上

  • Python检查ping终端的方法

    菜鸟一枚,写着试了试,虽说有点杂乱,但还是能用,我是在linux下运行的 大致说下过程: 1.把需要ping的网段中所有ip存到数组中(我是放到数组中了,其实直接for循环,一个个的也行) 2.遍历数组,逐个ping 3.根据ping返回的字符串,判断是否ping通 4.结果存入txt中 下面上代码咯(其实可以简化代码的,我这里就不简化了) #!/usr/bin/env python # coding: utf8 import time import subprocess import code

  • 在PyCharm的 Terminal(终端)切换Python版本的方法

    在我的电脑中存在多个版本的Python,实际工作中也时常需要切换Python版本来进行相关工作.在Pycharm的终端中使用python和ipython命令进入的python shell都是环境变量中,也就是默认的python版本. 每次在 PyCharm 软件中 Terminal 窗口 或者 在cmd 命令行界面中 ,执行 python 命令,启动的都是 python3 的交互界面: 在 PyCharm 软件中 Terminal 窗口 中,输入python优先进入环境变量中的python3.6

  • python如何在终端里面显示一张图片

    Linux终端里面可谓是奇妙无限,很多优秀的软件都诞生在终端里面.相较之下,Windows本身的理念和Linux就不一致,所以,你懂得. 下面,我们不妨先思考一下,如何在终端里面显示一张图片? 在终端里面显示,肯定就不像在看图软件里那样的细腻了,我们只是以字符代替某一点的像素,把大致的轮廓显示出来罢了. 编码 既然思路很清晰了,下面就来编码了. # coding:utf-8 import sys reload(sys) sys.setdefaultencoding('utf8') # __aut

  • 在Linux命令行终端中使用python的简单方法(推荐)

    Linux终端中的操作均是使用命令行来进行的.因此,对于小白来说,熟记几个基本的命令行和使用方法能够较快的在Linux命令行环境中将python用起来. 打开命令行窗口 打开命令行窗口的快捷键如下: Ctrl + Alt + t 关闭名命令行窗口 关闭命令行窗口的快捷键如下: Ctrl + d 进入python环境 在命令行中直接输入python即进入了python的编辑环境.进入环境后最明显的提示是:光标由-$变成>>>. 退出python环境 使用ctrl +d的方式退出python

  • 在linux的终端退出python命令行的方法

    如下所示: Python 2.7.7 (default, Jun 3 2014, 01:46:20) [GCC 4.9.0 20140521 (prerelease)] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> quitUse quit() or Ctrl-D (i.e. EOF) to

  • 如何为Python终端提供持久性历史记录

    问题 有没有办法告诉交互式Python shell在会话之间保留其执行命令的历史记录? 当会话正在运行时,在执行命令之后,我可以向上箭头并访问所述命令,我只是想知道是否有某种方法可以保存这些命令,直到下次我使用Python shell时. 这非常有用,因为我发现自己在会话中重用命令,这是我在上一个会话结束时使用的. 解决方案 当然你可以用一个小的启动脚本.来自python教程中的交互式输入编辑和历史替换: # Add auto-completion and a stored history fi

  • Python终端输出彩色字符方法详解

    有时候需要在终端显示彩色的字符,即根据需要显示不同颜色的字符串,比如我们要在终端打印一行错误提示信息,要把它弄成红色的.其实这个在Python中很好实现,使用转义序列来实现不同颜色的显示,转义序列以ESC开头,它的ASCII码八进制为 \033.显示格式为:\033[显示方式;前景色;背景色m 用这种原生的转义序列输出,在linux下完全支持,但是在windows下确存在兼容问题,比如在win10下可以正常显示颜色,在win7下确不支持.因此可以使用python标准库提供的colorama模块

  • 详解Python如何在终端打印字体颜色

    目录 简介 安装方式 案例源码 简介 日常开发中,经常需要打印显示各种信息.海量的信息堆砌在控制台中,就会导致各种信息都显示在一起,降低了重要信息的可读性.这时候,如果能给重要的信息加上差异的字体颜色,那么就会更加显眼,增加使用者可阅读性.Colorama是一个python专门用来在控制台.命令行输出彩色文字的模块,可以跨平台使用. 字体打印的三种方式: 1.原生:推荐只处理一两句,临时使用的时候用原生. 2.colorama模块:使用的地方很多的时候,推荐使用这个,易读性更高. 3.termc

  • 七种Python代码审查工具推荐

    虽然Python语言可谓目前最为灵活的开发语言之一,但是开发人员往往会滥用其灵活性,甚至会违反相关的标准.因此,Python代码也经常会出现如下常见质量问题: 导入了一些未曾用到的模块 函数在各种调用中缺少参数 缺少适当的格式缩进 在圆括号.方括号或大括号的前后缺少恰当的空格 显然,上述问题不但会影响代码的可读性,而且会使得代码的审查工作变得更为复杂.为此,我们需要通过诸如PyLint或Flake8 之类的静态分析工具来解决此问题,并减少各种可能出现的误报现象. 与此同时,随着软件开发团队规模的

  • python入门课程第一讲之安装与优缺点介绍

    目录 说在前面 何为Python 如何安装Python呢 Max OS下安装Python3 普通的安装方式 通过Homebrew来安装 Python有哪些优缺点呢? 优点 缺点 Python能干什么 总结 这是Pyhon系列文章的第一篇,本文主要介绍Python的基本概念以及如何安装. 干货满满,建议收藏,需要用到时常看看. 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~. 说在前面 Python语言对各位读者而言一定不会陌生,哪怕没有使用过Python,也一定听说过它.那一句人生苦短,我用P

  • 使用Python脚本将绝对url替换为相对url的教程

    公司一个项目需要上传图片,一开始同事将图片上传后结合当前主机拼成了一个绝对的URL(http://192.168.1.1:888/m/getimg?filename=xxx.jpg由于同时给手机终端提供接口,在手机终端会引起一些bug,改完代码后要求将以前的uri替换成相对的URL(/m/getimg?filename=xxx.jpg),由于图片是用img标签嵌入到内容同时用a标签括起显示大图的,所以需要读取数据库并对内容进行替换, 脚本内容如下: #!/usr/bin/env python #

  • 使用Python进行稳定可靠的文件操作详解

    考虑下述Python代码片段.对文件中的数据进行某些操作,然后将结果保存回文件中: 复制代码 代码如下: with open(filename) as f:   input = f.read()output = do_something(input)with open(filename, 'w') as f:   f.write(output) 看起来很简单吧?可能看起来并不像乍一看这么简单.我在产品服务器中调试应用,经常会出现奇怪的行为.这是我看过的失效模式的例子:失控的服务器进程溢出大量日志

  • Python中处理unchecked未捕获异常实例

    Talk Is Cheap 和Java一样,python也提供了对于checked exception和unchecked exception. 对于checked exception,我们通常使用try except可以显示解决,对于unchecked 异常,其实也是提供回调或者是钩子来帮助我们处理的,我们可以在钩子里面记录崩溃栈追踪或者发送崩溃数据. 下面代码可以实现python unchecked exception回调,并输出日志信息. Show Me The Code 复制代码 代码如

  • Python实现将绝对URL替换成相对URL的方法

    本文实例讲述了Python实现将绝对URL替换成相对URL的方法.分享给大家供大家参考.具体分析如下: 一.问题: 公司一个项目需要上传图片,一开始同事将图片上传后结合当前主机拼成了一个绝对的URL(http://192.168.1.1:888/m/getimg?filename=xxx.jpg)由于同时给手机终端提供接口,在手机终端会引起一些bug,改完代码后要求将以前的uri替换成相对的URL(/m/getimg?filename=xxx.jpg),由于图片是用img标签嵌入到内容同时用a标

  • 疯狂上涨的Python 开发者应从2.x还是3.x着手?

    纵观各大编程语言在 2017 年的发展情况,我们会发现涌现出诸如 Go.Swift 这类后起之秀,而其中最为耀眼的当属 Python.之所以 Python 如此受捧,不仅仅是人工智能.数字科学领域的兴起,而且与其自身的特性必不可分,正应了"Life is short,you need Python!".但与此同时,不少开发者开始纠结 Python 的入门究竟该从 2.x 还是 3.x 开始学起? 毕竟 Python 语言作者 Guido van Rossum 曾于 2014 年宣布 P

随机推荐