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编写分析Python程序性能的工具的教程
Apr 01 Python
python 将有序数组转换为二叉树的方法
Mar 26 Python
Python安装与基本数据类型教程详解
May 29 Python
python 使用opencv 把视频分割成图片示例
Dec 12 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
PyTorch加载自己的数据集实例详解
Mar 18 Python
python 读取二进制 显示图片案例
Apr 24 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
python pymysql链接数据库查询结果转为Dataframe实例
Jun 05 Python
Python select及selectors模块概念用法详解
Jun 22 Python
Python中可变和不可变对象的深入讲解
Aug 02 Python
yolov5返回坐标的方法实例
Mar 17 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简单实现循环链表功能示例
2017/11/10 PHP
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
列举Python中吸引人的一些特性
2015/04/09 Python
python 容器总结整理
2017/04/04 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
学习交流会主持词
2014/04/01 职场文书
《学棋》教后反思
2014/04/14 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
2016年万圣节活动总结
2016/04/05 职场文书