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 相关文章推荐
linux系统使用python获取cpu信息脚本分享
Jan 15 Python
python实现忽略大小写对字符串列表排序的方法
Sep 25 Python
Python随机数用法实例详解【基于random模块】
Apr 18 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
对Python模块导入时全局变量__all__的作用详解
Jan 11 Python
Python发送手机动态验证码代码实例
Feb 28 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
keras slice layer 层实现方式
Jun 11 Python
Python 实现键盘鼠标按键模拟
Nov 18 Python
python FTP编程基础入门
Feb 27 Python
Python使用openpyxl复制整张sheet
Mar 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
人族 TERRAN 概述
2020/03/14 星际争霸
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
用PHP制作静态网站的模板框架(三)
2006/10/09 PHP
php学习 函数 课件
2008/06/15 PHP
php的curl实现get和post的代码
2008/08/23 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
js如何实现淡入淡出效果
2020/11/18 Javascript
jQuery实现验证年龄简单思路
2016/02/24 Javascript
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
Django视图和URL配置详解
2018/01/31 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
俄罗斯电动工具和设备购物网站:Vseinstrumenti.ru
2020/11/12 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
招聘单位介绍信
2014/01/14 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
领导干部整治奢华浪费之风思想汇报
2014/10/07 职场文书
大学生见习总结报告
2015/06/24 职场文书
团结友爱主题班会
2015/08/13 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
代码解析React中setState同步和异步问题
2021/06/03 Javascript
详解jQuery的核心函数和事件处理
2022/02/18 jQuery