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中的一些类型转换函数小结
Feb 10 Python
python标准算法实现数组全排列的方法
Mar 17 Python
python BeautifulSoup设置页面编码的方法
Apr 03 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
基于python进行桶排序与基数排序的总结
May 29 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
机器学习实战之knn算法pandas
Jun 22 Python
Django自带日志 settings.py文件配置方法
Aug 30 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
详细分析Python collections工具库
Jul 16 Python
python实现无边框进度条的实例代码
Dec 30 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
php中将数组存到文件里的实现代码
2012/01/19 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
许愿墙中用到的函数
2006/10/07 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
简单介绍Ruby中的CGI编程
2015/04/10 Python
python中尾递归用法实例详解
2015/04/28 Python
Python实现的简单算术游戏实例
2015/05/26 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
python简单贪吃蛇开发
2019/01/28 Python
对Django外键关系的描述
2019/07/26 Python
python list转置和前后反转的例子
2019/08/26 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
如何将json数据转换为python数据
2020/09/04 Python
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
幼儿园托班开学寄语
2014/01/18 职场文书
行政部工作岗位职责范本
2014/03/05 职场文书
党委班子对照检查材料
2014/08/19 职场文书
预备党员半年考察意见
2015/06/01 职场文书
2016党员党课心得体会
2016/01/07 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python