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的shutil模块中文件的复制操作函数详解
Jul 05 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
Django项目实战之用户头像上传与访问的示例
Apr 21 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
Pandas 按索引合并数据集的方法
Nov 15 Python
Jupyter notebook快速入门教程(推荐)
May 18 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
python 读取串口数据的示例
Nov 09 Python
python 日志模块logging的使用场景及示例
Jan 04 Python
基于Python 函数和方法的区别说明
Mar 24 Python
Requests什么的通通爬不了的Python超强反爬虫方案!
May 20 Python
python实现简单的聊天小程序
Jul 07 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设计模式 Facade(外观模式)
2011/06/26 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
javascript时间差插件分享
2016/07/18 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
python三引号输出方法
2019/02/27 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
Django choices下拉列表绑定实例
2020/03/13 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
python和php哪个容易学
2020/06/19 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
分享一个python的aes加密代码
2020/12/22 Python
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
优秀团员个人的自我评价
2013/10/02 职场文书
高一化学教学反思
2014/02/05 职场文书
领班岗位职责范文
2014/02/06 职场文书
项目合作协议书
2014/04/16 职场文书
机关作风建设整改方案
2014/10/27 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
会计工作总结范文2014
2014/12/23 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL