给Python IDLE加上自动补全和历史功能


Posted in Python onNovember 30, 2014

许多时候,我们使用Python,并不用写一个程序,一些不复杂的任务,我更喜欢在 IDLE(也就是交互式提示模式)下输入几行代码完成。然而,在这个模式下编辑代码,也有不够便利的地方,最主要的就是,不能用Tab自动补全,不能记忆 上一次输入的命令(没办法,谁让我们在Shell下习惯了呢)。
这时候,我们可以直接使用Python启动脚本,解决这个问题。

启动脚本的程序非常简单,这里不多说明,只给出代码:

import readline
import rlcompleter
import atexit
import os
# tab autocomplete
readline.parse_and_bind(‘tab: complete')
# history file
histfile = os.path.join(os.environ['HOME'], ‘.pythonhistory')
try:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter

完成之后,我们把它保存为.pythonstartup,存放在自己的目录下(譬如/home/yurii),再将PYTHONSTARTUP变量指向刚才放的地址,就可以了。最省事的办法是在bashrc中添加这样一行:

export PYTHONSTARTUP=/home/yurii/.pythonstartup

这样,不但增加了tab的自动补全功能,而且重新启动IDLE时,通过上下键,还能翻到上次输入的命令,非常方便。

Python 相关文章推荐
python进程类subprocess的一些操作方法例子
Nov 22 Python
python 数据清洗之数据合并、转换、过滤、排序
Feb 12 Python
ubuntu环境下python虚拟环境的安装过程
Jan 07 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
python 获取毫秒数,计算调用时长的方法
Feb 20 Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
Mar 05 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 Python
python实现简单猜单词游戏
Dec 24 Python
深入理解python多线程编程
Apr 18 Python
使用python求解迷宫问题的三种实现方法
Mar 17 Python
让 python 命令行也可以自动补全
Nov 30 #Python
Python lambda和Python def区别分析
Nov 30 #Python
Python内置函数之filter map reduce介绍
Nov 30 #Python
Python Queue模块详解
Nov 30 #Python
Python socket C/S结构的聊天室应用实现
Nov 30 #Python
Python open()文件处理使用介绍
Nov 30 #Python
Python fileinput模块使用介绍
Nov 30 #Python
You might like
PHP也能干大事之PHP中的编码解码详解
2015/04/20 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
2017/08/18 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
Prototype中dom对象方法汇总
2008/09/17 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
python 字符串格式化的示例
2020/09/21 Python
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
求职简历的自我评价怎样写好
2013/10/07 职场文书
怎么样写好简历中的自我评价
2013/10/25 职场文书
综合办公室个人的自我评价
2013/12/22 职场文书
期中考试复习计划
2015/01/19 职场文书
详解Javascript实践中的命令模式
2021/05/05 Javascript