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程序中解析并修改XML内容的方法
Nov 16 Python
Python实现针对中文排序的方法
May 09 Python
python利用标准库如何获取本地IP示例详解
Nov 01 Python
Python微信公众号开发平台
Jan 25 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
python中的函数递归和迭代原理解析
Nov 14 Python
python绘制规则网络图形实例
Dec 09 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
详细分析Python可变对象和不可变对象
Jul 09 Python
pycharm 如何取消连按两下shift出现的全局搜索
Jan 15 Python
详细总结Python常见的安全问题
May 21 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
SSI指令
2006/11/25 PHP
使用TinyButStrong模板引擎来做WEB开发
2007/03/16 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
php简单计算权重的方法示例【适合抽奖类应用】
2019/06/10 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
北大自主招生自荐信
2013/10/19 职场文书
yy生日主持词
2014/03/20 职场文书
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python