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网页请求urllib2模块简单封装代码
Feb 07 Python
Python def函数的定义、使用及参数传递实现代码
Aug 10 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
Python金融数据可视化汇总
Nov 17 Python
python验证码识别实例代码
Feb 03 Python
python爬虫_实现校园网自动重连脚本的教程
Apr 22 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
如何优雅地处理Django中的favicon.ico图标详解
Jul 05 Python
利用ctypes获取numpy数组的指针方法
Feb 12 Python
搞清楚 Python traceback的具体使用方法
May 13 Python
python实现手势识别的示例(入门)
Apr 15 Python
Python错误的处理方法
Jun 23 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
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
动态调用CSS文件的JS代码
2010/07/29 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
JavaScript计算出两个数的差值
2020/03/19 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
python 将字符串转换成字典dict
2013/03/24 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
讲解Python中fileno()方法的使用
2015/05/24 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
Java基础面试题
2014/07/19 面试题
党员学习十八大感想
2014/01/17 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
2015年班组工作总结
2015/04/20 职场文书
田径运动会通讯稿
2015/07/18 职场文书