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 相关文章推荐
win7 下搭建sublime的python开发环境的配置方法
Jun 18 Python
python中模块查找的原理与方法详解
Aug 11 Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
python脚本实现验证码识别
Jun 07 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
对pandas的行列名更改与数据选择详解
Nov 12 Python
Python 获取项目根路径的代码
Sep 27 Python
python 通过手机号识别出对应的微信性别(实例代码)
Dec 22 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 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中的时间显示
2007/01/18 PHP
php 解压rar文件及zip文件的方法
2014/05/05 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
ToolTips JQEURY插件之简洁小提示框效果
2011/11/19 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
Angular2 (RC4) 路由与导航详解
2016/09/21 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
Python入门篇之面向对象
2014/10/20 Python
python编程开发之日期操作实例分析
2015/11/13 Python
深入解析Python中的线程同步方法
2016/06/14 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
python 队列详解及实例代码
2016/10/18 Python
如何对python的字典进行排序
2020/06/19 Python
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
加州风格的游泳和沙滩装品牌:Cupshe
2019/06/10 全球购物
学校介绍信范文
2014/01/14 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
入党团支部推荐意见
2015/06/02 职场文书
《角的初步认识》教学反思
2016/02/17 职场文书
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
vscode内网访问服务器的方法
2022/06/28 Servers