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中的pandas库对cdn日志进行分析详解
Mar 07 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
Apr 24 Python
Python获取CPU、内存使用率以及网络使用状态代码
Feb 08 Python
Flask解决跨域的问题示例代码
Feb 12 Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
Jun 18 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
Python参数传递及收集机制原理解析
Jun 05 Python
学python爬虫能做什么
Jul 29 Python
详解python tkinter 图片插入问题
Sep 03 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 21 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面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
PHP 之Section与Cookie使用总结
2012/09/14 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
2015/02/03 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
js获取对象为null的解决方法
2013/11/21 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
2018/09/14 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
vue-cli3 配置开发与测试环境详解
2019/05/17 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
浅谈Django的缓存机制
2018/08/23 Python
详解python的四种内置数据结构
2019/03/19 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
高中教师先进事迹材料
2014/08/22 职场文书
关于 Python json中load和loads区别
2021/11/07 Python
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js