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 相关文章推荐
开始着手第一个Django项目
Jul 15 Python
python中模块查找的原理与方法详解
Aug 11 Python
详解python字节码
Feb 07 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
在Python中通过getattr获取对象引用的方法
Jan 21 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 Python
使用python绘制温度变化雷达图
Oct 18 Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 Python
pytorch 常用线性函数详解
Jan 15 Python
Python实现文件压缩和解压的示例代码
Aug 12 Python
python音频处理的示例详解
Dec 23 Python
python实现简单聊天功能
Jul 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取整的几种方式
2013/06/25 PHP
php中error与exception的区别及应用
2014/07/28 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
PHP多态代码实例
2015/06/26 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
js变量以及其作用域详解
2020/07/18 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
Javascript中字符串和数字的操作方法整理
2017/01/22 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
Python类定义和类继承详解
2015/05/08 Python
python 写的一个爬虫程序源码
2016/02/28 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
记者岗位职责
2014/01/06 职场文书
童装店创业计划书
2014/01/09 职场文书
学生干部的自我评价分享
2014/01/18 职场文书
社区包粽子活动方案
2014/01/21 职场文书
初中美术教学反思
2014/01/29 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
2015年维修工作总结
2015/04/25 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL