给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中的__init__和__new__
Mar 12 Python
Python连接DB2数据库
Aug 27 Python
答题辅助python代码实现
Jan 16 Python
浅谈python可视化包Bokeh
Feb 07 Python
Django 实现下载文件功能的示例
Mar 06 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 Python
基于python实现把图片转换成素描
Nov 13 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
Python操作注册表详细步骤介绍
Feb 05 Python
Django中和时区相关的安全问题详解
Oct 12 Python
python 30行代码实现蚂蚁森林自动偷能量
Feb 08 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 变量未定义等错误的解决方法
2011/01/12 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
举例区分Python中的浅复制与深复制
2015/07/02 Python
说一说Python logging
2016/04/15 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
初学者学习Python好还是Java好
2020/05/26 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
个人合作协议书范本
2014/04/18 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
代办委托书怎么写
2014/08/01 职场文书
写作技巧:如何撰写商业计划书
2019/08/08 职场文书
对Golang中的FORM相关字段理解
2021/05/02 Golang
聊聊redis-dump工具安装问题
2022/01/18 Redis