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 变量类型及命名规则介绍
Jun 08 Python
Python之eval()函数危险性浅析
Jul 03 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
PyQt5 加载图片和文本文件的实例
Jun 14 Python
基于python的BP神经网络及异或实现过程解析
Sep 30 Python
Python 读取 YUV(NV12) 视频文件实例
Dec 09 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
Django values()和value_list()的使用
Mar 31 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
Python Numpy之linspace用法说明
Apr 17 Python
Python预测分词的实现
Jun 18 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
20个PHP常用类库小结
2011/09/11 PHP
Open and Print a Word Document
2007/06/15 Javascript
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
flask中使用SQLAlchemy进行辅助开发的代码
2013/02/10 Python
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
python 发送邮件的四种方法汇总
2020/12/02 Python
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
出生证明公证书
2014/04/09 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
买卖合同协议书范本
2014/10/18 职场文书
2016年公司“3.12”植树节活动总结
2016/03/16 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技