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中的条件判断语句
May 14 Python
在Python中操作字典之setdefault()方法的使用
May 21 Python
python3 与python2 异常处理的区别与联系
Jun 19 Python
Python面向对象编程基础解析(二)
Oct 26 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
Python基于pycrypto实现的AES加密和解密算法示例
Apr 10 Python
浅谈Python 递归算法指归
Aug 22 Python
Python多继承以及MRO顺序的使用
Nov 11 Python
Python decorator拦截器代码实例解析
Apr 04 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
Aug 04 Python
使用Python操作MySQL的小技巧
Sep 10 Python
python 绘制正态曲线的示例
Sep 24 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使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
PHP远程采集图片详细教程
2014/07/01 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
python实现简单多人聊天室
2018/12/11 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
Python简单基础小程序的实例代码
2019/04/28 Python
Python接口开发实现步骤详解
2020/04/26 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
什么是GWT的Module
2013/01/20 面试题
工程管理造价应届生求职信
2013/11/13 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
高中军训感想300字
2014/03/04 职场文书
高考备战决心书
2014/03/11 职场文书
运动会演讲稿300字
2014/08/25 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
公积金贷款承诺书
2015/04/30 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
《秋思》教学反思
2016/02/23 职场文书