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多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
Python中方法链的使用方法
Feb 23 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
代码分析Python地图坐标转换
Feb 08 Python
python实现矩阵打印
Mar 02 Python
Python实现字符串匹配的KMP算法
Apr 04 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
Python可迭代对象操作示例
May 07 Python
python matplotlib实现将图例放在图外
Apr 17 Python
Python 使用双重循环打印图形菱形操作
Aug 09 Python
django数据模型中null和blank的区别说明
Sep 02 Python
利用Python中的Xpath实现一个在线汇率转换器
Sep 09 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的可变变量名的使用方法分享
2012/02/05 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
四个PHP非常实用的功能
2015/09/29 PHP
php并发加锁示例
2016/10/17 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
window.location.hash 属性使用说明
2010/03/20 Javascript
javascript与CSS复习(三)
2010/06/29 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
探讨JavaScript中声明全局变量三种方式的异同
2013/12/03 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
express框架中使用jwt实现验证的方法
2019/08/25 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
python出现"IndentationError: unexpected indent"错误解决办法
2017/10/15 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
合作意向书格式及范文
2014/03/31 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
体育口号大全
2014/06/18 职场文书
化工专业求职信
2014/07/01 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
小学庆六一主持词
2015/06/30 职场文书
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android
Python selenium绕过webdriver监测执行javascript
2022/04/12 Python