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 相关文章推荐
Python3基础之输入和输出实例分析
Aug 18 Python
Python内置数据结构与操作符的练习题集锦
Jul 01 Python
python实现上传下载文件功能
Nov 19 Python
python脚本作为Windows服务启动代码详解
Feb 11 Python
对Python3 解析html的几种操作方式小结
Feb 16 Python
Flask框架学习笔记之模板操作实例详解
Aug 15 Python
keras实现图像预处理并生成一个generator的案例
Jun 17 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 Python
python 爬虫请求模块requests详解
Dec 04 Python
Python 正则模块详情
Nov 02 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
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
js判断出两个字符串最大子串的函数实现方法
2016/11/01 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
python删除文本中行数标签的方法
2018/05/31 Python
python生成以及打开json、csv和txt文件的实例
2018/11/16 Python
python requests.post带head和body的实例
2019/01/02 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
英国健身超市:Fitness Superstore
2019/06/17 全球购物
文秘专业个人求职信
2013/12/22 职场文书
公司道歉信范文
2014/01/09 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
阿甘正传观后感
2015/06/01 职场文书
红色经典观后感
2015/06/18 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
ipad隐藏软件app图标方法
2022/04/19 数码科技
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS