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多线程编程(七):使用Condition实现复杂同步
Apr 05 Python
python插入排序算法实例分析
Jul 03 Python
Python正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
Python使用三种方法实现PCA算法
Dec 12 Python
python_opencv用线段画封闭矩形的实例
Dec 05 Python
django项目中使用手机号登录的实例代码
Aug 15 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
Jan 10 Python
Django User 模块之 AbstractUser 扩展详解
Mar 11 Python
详解Python多线程下的list
Jul 03 Python
python接入支付宝的实例操作
Jul 20 Python
Python中for后接else的语法使用
May 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
我的论坛源代码(六)
2006/10/09 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
javascript实现评分功能
2020/06/24 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
Python linecache.getline()读取文件中特定一行的脚本
2008/09/06 Python
python操作CouchDB的方法
2014/10/08 Python
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
Python中int()函数的用法浅析
2017/10/17 Python
python3爬虫之设计签名小程序
2018/06/19 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
Python实现简单的2048小游戏
2021/03/01 Python
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
家长会主持词开场白
2014/03/18 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
捐款活动总结
2014/08/27 职场文书
企业贷款委托书格式
2014/09/12 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
离婚协议书范本
2015/01/26 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
SSM VUE Axios详解
2021/10/05 Vue.js