python实现定制交互式命令行的方法


Posted in Python onJuly 03, 2014

Python的交互式命令行可通过启动文件来配置。

当Python启动时,会查找环境变量PYTHONSTARTUP,并且执行该变量中所指定文件里的程序代码。该指定文件名称以及地址可以是随意的。按Tab键时会自动补全内容和命令历史。这对命令行的有效增强,而这些工具则是基于readline模块实现的(这需要readline程序库辅助实现)。

此处为大家举一个简单的启动脚本文件例子,它为python命令行添加了按键自动补全内容和历史命令功能。

[python@python ~]$ cat .pythonstartup
import readline
import rlcompleter
import atexit
import os
#tab completion
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

设置环境变量

[python@python ~]$ cat .bash_profile|grep PYTHON
export PYTHONSTARTUP=/home/python/.pythonstartup

验证Tab键补全和历史命令查看。

[python@python ~]$ python
Python 2.7.5 (default, Oct 6 2013, 10:45:13)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import md5
>>> md5.
md5.__class__(     md5.__getattribute__( md5.__reduce__(    md5.__subclasshook__(
md5.__delattr__(    md5.__hash__(     md5.__reduce_ex__(   md5.blocksize
md5.__dict__      md5.__init__(     md5.__repr__(     md5.digest_size
md5.__doc__      md5.__name__      md5.__setattr__(    md5.md5(
md5.__file__      md5.__new__(      md5.__sizeof__(    md5.new(
md5.__format__(    md5.__package__    md5.__str__(      md5.warnings
>>> import os
>>> import md5

注意:如果在make的时候出现:

Python build finished, but the necessary bits to build these modules were not found:
_tkinter            gdbm      readline      sunaudiodev

如果对此忽略了的话,import readline会报错。表示没有指定模块!

这里是缺少指定包:

redhat:   readline-devel.xxx.rpm

安装上重新编译执行,问题即可得到解决。

Python 相关文章推荐
跟老齐学Python之Python文档
Oct 10 Python
win10环境下python3.5安装步骤图文教程
Feb 03 Python
JSON Web Tokens的实现原理
Apr 02 Python
Scrapy的简单使用教程
Oct 24 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 Python
python实现最大优先队列
Aug 29 Python
python psutil监控进程实例
Dec 17 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
Python reques接口测试框架实现代码
Jul 28 Python
python中sys模块是做什么用的
Aug 16 Python
DRF使用simple JWT身份验证的实现
Jan 14 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 Python
小结Python用fork来创建子进程注意事项
Jul 03 #Python
在Windows8上的搭建Python和Django环境
Jul 03 #Python
Win7上搭建Cocos2d-x 3.1.1开发环境
Jul 03 #Python
盘点提高 Python 代码效率的方法
Jul 03 #Python
python实现html转ubb代码(html2ubb)
Jul 03 #Python
Python 获取新浪微博的最新公共微博实例分享
Jul 03 #Python
python socket 超时设置 errno 10054
Jul 01 #Python
You might like
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
js实现简单音乐播放器
2020/06/30 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
python生成随机验证码(中文验证码)示例
2014/04/03 Python
python 数据清洗之数据合并、转换、过滤、排序
2017/02/12 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
Python3常见函数range()用法详解
2019/12/30 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
入党自我鉴定范文
2013/10/04 职场文书
读书心得体会
2013/12/28 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL