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 获取新浪微博的最新公共微博实例分享
Jul 03 Python
Python实现的批量下载RFC文档
Mar 10 Python
Python第三方库的安装方法总结
Jun 06 Python
Python爬取网易云音乐热门评论
Mar 31 Python
socket + select 完成伪并发操作的实例
Aug 15 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
python 获取页面表格数据存放到csv中的方法
Dec 26 Python
django的ORM操作 增加和查询
Jul 26 Python
python实现while循环打印星星的四种形状
Nov 23 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
Nov 24 Python
基于Python实现股票收益率分析
Apr 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
谈谈 PHP7新增功能
2015/12/16 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
react中使用swiper的具体方法
2018/05/15 Javascript
浅谈Vuex注入Vue生命周期的过程
2019/05/20 Javascript
python通过socket查询whois的方法
2015/07/18 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
python开发之文件操作用法实例
2015/11/13 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
jupyter notebook实现显示行号
2020/04/13 Python
django在开发中取消外键约束的实现
2020/05/20 Python
python实现移动木板小游戏
2020/10/09 Python
详解CSS3伸缩布局盒模型Flex布局
2018/08/20 HTML / CSS
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
工会换届选举方案
2014/05/21 职场文书
学习焦裕禄同志为人民服务思想汇报
2014/09/10 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
2015年公司新年寄语
2014/12/08 职场文书
2015年档案室工作总结
2015/05/23 职场文书
边城读书笔记
2015/06/29 职场文书