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文档生成工具pydoc使用介绍
Jun 02 Python
Python打包可执行文件的方法详解
Sep 19 Python
python的文件操作方法汇总
Nov 10 Python
在VS Code上搭建Python开发环境的方法
Apr 06 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
Jan 17 Python
详解Python的三种可变参数
May 08 Python
PyQt5 多窗口连接实例
Jun 19 Python
Python实现滑动平均(Moving Average)的例子
Aug 24 Python
python3实现绘制二维点图
Dec 04 Python
keras 获取某层输出 获取复用层的多次输出实例
May 23 Python
python实现ROA算子边缘检测算法
Apr 05 Python
如何用 Python 子进程关闭 Excel 自动化中的弹窗
May 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为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
php class类的用法详细总结
2013/10/17 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
理解JSON:3分钟课程
2011/10/28 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
javascript验证身份证号
2015/03/03 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
python list语法学习(带例子)
2013/11/01 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
python中rc1什么意思
2020/06/19 Python
美国百年历史早餐食品供应商:Wolferman’s
2017/01/18 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
小学教师听课制度
2014/02/01 职场文书
优秀创业计划书分享
2019/07/19 职场文书
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python