Python getopt模块处理命令行选项实例


Posted in Python onMay 13, 2014

getopt模块用于抽出命令行选项和参数,也就是sys.argv
命令行选项使得程序的参数更加灵活。支持短选项模式和长选项模式
例如  python scriptname.py -f 'hello' --directory-prefix=/home -t --format 'a' 'b'

import getopt, sys
shortargs = 'f:t'
longargs = ['directory-prefix=', 'format']
opts, args = getopt.getopt( sys.argv[1:], shortargs, longargs )

getopt.getopt ( [命令行参数列表], '短选项', [长选项列表] )

短选项名后的冒号 : 表示该选项必须有附加的参数
长选项名后的等号 = 表示该选项必须有附加的参数

返回 opts 和 args
opts 是一个参数选项及其value的元组 ( ( '-f', 'hello'), ( '-t', '' ), ( '--format', '' ), ( '--directory-prefix', '/home' ) )
args 是一个除去有用参数外其他的命令行输入 ( 'a', 'b' )  

# 然后遍历 opts 便可以获取所有的命令行选项及其对应参数了
for opt, val in opts:
    if opt in ( '-f', '--format' ):
        pass
    if ....

使用字典接受命令行的输入,然后再传送字典,可以使得命令行参数的接口更加健壮

# 两个来自 python2.5 Documentation 的例子

>>> import getopt, sys
>>> arg = '-a -b -c foo -d bar a1 a2'
>>> optlist, args = getopt.getopt( sys.argv[1:], 'abc:d:' )
>>> optlist
[('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')]
>>> args
['a1', 'a2']
>>> arg = '--condition=foo --testing --output-file abc.def -x a1 a2'
>>> optlist, args = getopt.getopt( sys.argv[1:], 'x', ['condition=', 'output-file=', 'testing'] )
>>> optlist
[ ('--condition', 'foo'), ('--testing', ''), ('--output-file', 'abc.def'), ('-x','') ]
>>> args
['a1', 'a2']
Python 相关文章推荐
Python模块学习 filecmp 文件比较
Aug 27 Python
python使用递归解决全排列数字示例
Feb 11 Python
举例讲解Python中的身份运算符的使用方法
Oct 13 Python
深入浅析python定时杀进程
Jun 06 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
python flask实现分页效果
Jun 27 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
python使用sklearn实现决策树的方法示例
Sep 12 Python
python常见字符串处理函数与用法汇总
Oct 30 Python
python 实现目录复制的三种小结
Dec 04 Python
python 生成正态分布数据,并绘图和解析
Dec 21 Python
python开发人人对战的五子棋小游戏
May 02 Python
Python random模块(获取随机数)常用方法和使用例子
May 13 #Python
Python自动化测试工具Splinter简介和使用实例
May 13 #Python
Python获取远程文件大小的函数代码分享
May 13 #Python
Python FTP操作类代码分享
May 13 #Python
python生成指定尺寸缩略图的示例
May 07 #Python
python读取浮点数和读取文本文件示例
May 06 #Python
python创建线程示例
May 06 #Python
You might like
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
php构造函数与析构函数
2016/04/23 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
Javascript下的keyCode键码值表
2007/04/10 Javascript
javascript 页面划词搜索JS
2009/09/28 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
JavaScript实现多球运动效果
2020/09/07 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
简单介绍Python中的struct模块
2015/04/28 Python
python生成器generator用法实例分析
2015/06/04 Python
python字符类型的一些方法小结
2016/05/16 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
详解Django中异步任务之django-celery
2020/11/05 Python
python切割图片的示例
2020/11/12 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
校园活动策划方案
2014/06/13 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
现役军人家属慰问信
2015/03/24 职场文书
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android