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创建关联数组(字典)的方法
May 04 Python
python中range()与xrange()用法分析
Sep 21 Python
python中的set实现不重复的排序原理
Jan 24 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
Python编写合并字典并实现敏感目录的小脚本
Feb 26 Python
python整合ffmpeg实现视频文件的批量转换
May 31 Python
python 使用socket传输图片视频等文件的实现方式
Aug 07 Python
关于Python形参打包与解包小技巧分享
Aug 24 Python
python有序查找算法 二分法实例解析
Feb 18 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
Apr 20 Python
Python如何实现的二分查找算法
May 27 Python
Python读写锁实现实现代码解析
Nov 28 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/09/13 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
laravel实现按月或天或小时统计mysql数据的方法
2019/10/09 PHP
javascript动画效果类封装代码
2007/08/28 Javascript
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
Python中使用PDB库调试程序
2015/04/05 Python
Python中的zipfile模块使用详解
2015/06/25 Python
python文件操作相关知识点总结整理
2016/02/22 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
Css3圆角边框制作代码
2015/11/18 HTML / CSS
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
毕业生实习期转正自我鉴定
2014/09/26 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
写给媳妇的检讨书
2015/05/06 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL