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读取UTF-8文件及统计文件行数的方法
May 22 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
PyQt5实现简易计算器
May 30 Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
Jul 14 Python
Python文件操作及内置函数flush原理解析
Oct 13 Python
PyTorch中clone()、detach()及相关扩展详解
Dec 09 Python
python将YUV420P文件转PNG图片格式的两种方法
Jan 22 Python
python中urllib包的网络请求教程
Apr 19 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
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
理解javascript async的用法
2017/08/22 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
微信上传视频文件提示(推荐)
2018/11/22 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
python抓取百度首页的方法
2015/05/19 Python
浅谈Python中的bs4基础
2018/10/21 Python
python实现多线程端口扫描
2019/08/31 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
python对文件的操作方法汇总
2020/02/28 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
python中实现词云图的示例
2020/12/19 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
成人继续教育实施方案
2014/03/01 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
社区志愿者培训方案
2014/06/10 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android