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通过BF算法实现关键词匹配的方法
Mar 13 Python
浅析Python中将单词首字母大写的capitalize()方法
May 18 Python
Python制作简单的网页爬虫
Nov 22 Python
Python argv用法详解
Jan 08 Python
利用python实现简单的循环购物车功能示例代码
Jul 05 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
Jun 11 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
基于SpringBoot构造器注入循环依赖及解决方式
Apr 26 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
django 实现后台从富文本提取纯文本
Jul 02 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
Python创建SQL数据库流程逐步讲解
Sep 23 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
php 高性能书写
2010/12/11 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
javascript动画效果类封装代码
2007/08/28 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
对javascript继承的理解
2016/10/11 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
2017/09/20 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
在Python中使用dict和set方法的教程
2015/04/27 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
利用python在excel中画图的实现方法
2020/03/17 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
大门门卫岗位职责
2013/11/30 职场文书
公务员转正考察材料
2014/02/07 职场文书
财务简历的自我评价
2014/03/05 职场文书
残疾人小组计划书
2014/04/27 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
优秀团支部申报材料
2014/12/26 职场文书
高三语文复习计划
2015/01/19 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
实践论读书笔记
2015/06/29 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android