optlist, argv = getopt.getopt(argv, 'cdsarRvn:e:E:f:F:w:O:m:M:o:g:')

模块getopt用于分割了main函数的参数,参数args一般是sys.argv[1:],函数返回两个列表:opts 和args 。

参数值 optlist/opts: 是个包含两元祖的列表,每个元祖是分析出来的格式信息,分析出的格式信息,包含一个参数选项及其value的元组,每个元素为:( 选项串, 附加参数) 。如果没有附加参数则为空串'' 。(e.g: [(-m, build.ninja),(-o, make.log),(-g, soong_build.ninja)],[-d, ])

参数值 argv/args: 是个包含字符串的列表,包含那些没有‘-’或‘--’的参数,即不属于格式信息的剩余的命令行参数。一般尾随格式参数。(e.g: aaa, oooo)

getopt(args, shortopts, longopts = [])  #shortopts 短格式 (-) ;longopts 长格式(--)

短选项名后的冒号 : 表示该选项必须有附加的参数,如果还有此选项的附加参数,可以用空格分开,也可以不分开。长度任意,可以用引号。

如以下是正确的:
-o
-oa
-obbbb
-o bbbb
-o "a b"

长选项名后的等号 = 表示该选项必须有附加的参数,如果还有些选项的附加参数,后面要紧跟"=",再加上参数。"="号前后不能有空格。如以下是正确的:

--help=file
--help file

用法

import getopt, sys
shortargs = 'f:t'
longargs = ['directory-prefix=', 'format']
opts, args = getopt.getopt( sys.argv[1:], shortargs, longargs ) # 然后遍历 opts 便可以获取所有的命令行选项及其对应参数了
for opt, val in opts:
if opt in ( '-f', '--format' ):
pass
if ....

主要是对分析出的参数进行判断是否存在,然后再进一步处理:使用一个for循环,依次从opts 中取出一个两元组,赋给 opt, val 两个变量,遍历opts。接着对取出的选项参数进行处理。

处理参数最好用try...expect...以防止程序因异常而中断。

try:
opts, args = getopt.getopt(sys.argv[1:], "ho:", ["help", "output="])
except getopt.GetoptError:
# print help information and exit:

【参考文档】

https://andylin02.iteye.com/blog/845355

http://blog.csdn.net/chengxuyuanyonghu/article/details/42556885

https://www.cnblogs.com/zz22--/p/7719285.html

https://www.jb51.net/article/50067.htm

Python module ---- getopt的更多相关文章

  1. python module getopt usage

    import getopt import sys def usage(): print 'this is a usage.' def main(): try: print sys.argv #sys. ...

  2. install python module

    [install python module] 参考:http://docs.python.org/2.7/install/index.html

  3. (转载)python: getopt的使用;

    注: 该文转载于https://blog.csdn.net/tianzhu123/article/details/7655499python中 getopt 模块, 该模块是专门用来处理命令行参数的 ...

  4. Nuke Python module的使用

    最近很多脚本工作都需要脱离nuke的gui环境运行,没有了script editor就必须要尝试Nuke Python module功能了.该模式可以执行大部分在GUI环境中的命令,在自动生成或者批量 ...

  5. __import__ 与动态加载 python module

    原文出处: koala bear    Direct use of __import__() is rare, except in cases where you want to import a m ...

  6. Python module中的全局变量

    Python module中的全局变量 我想要实现一个python module,这个module中有一些配置项,这些配置项可以被读取,被修改.一个可行的方案是把这些配置项写到一个叫settings. ...

  7. Python module all in one

    Python module all in one Python Modules https://docs.python.org/3/tutorial/modules.html Fibonacc # F ...

  8. Python之getopt模块

    1.getopt——C风格命令行解析 http://docs.python.org/2.7/library/getopt.html#module-getopt getopt.getopt(args, ...

  9. Python.Module.site

    site " This module is automatically imported during initialization. The automatic import can be ...

随机推荐

  1. java删除文件支持通配符

    原文:https://blog.csdn.net/wdzayyt/article/details/7209530 感谢原作者 package com.covics.zfh; import java.i ...

  2. windows7 64位系统安装CPU版本TensorFlow(anaconda3.6)

    1>下载anaconda3.6,https://www.anaconda.com/download/,选择64位的anaconda3.6,安装时候,路径可以自定义,但是要选择把路径添加到环境变量 ...

  3. python 2.7 pip导入django,将python部署到sublime上

    1.安装python 2.7,并且导入第三方库django 下载python 2.7,然后把python2.7的python.exe的路径和pip的路径添加到系统环境变量的path路径下. win+R ...

  4. 二进制中的个数(JAVA)

    二进制中的1的个数 题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路:用位运算来进行移1操作.(首先得知道数在计算机中都是以01来放置的) 1,若由一个数11100,当 ...

  5. vs编码对编译的影响(UTF-8 no BOM编译通不过)

    VS的编译器对Unicode源代码支持如下: UTF-16 little endian with or without byte order mark (BOM). UTF-16 big endian ...

  6. 左耳听风-ARTS-第1周

    Algorithm https://leetcode.com/problems/longest-common-prefix/ class Solution { public String longes ...

  7. python面试题--数据类型

    数据类型 字典 dict:字典,字典是一组键(key)和值(value)的组合,通过键(key)进行查找,没有顺序, 使用大括号”{}”;应用场景:dict,使用键和值进行关联的数据; 现有字典d={ ...

  8. nis+kerberos 实现服务验证

    1.NIS部分 1.1 简介     NIS(Network Information Service,or Yellow Page or YP) 网络信息服务,由sun公司开发并授权给unix供应商, ...

  9. 在IE中下载Office2007文件时在对话框中下载文件变成ZIP文件的问题

    导致原因: 从IIS或者Tomcat之类的Web服务器通过二进制流下载文件时(比如通过设置Header为Content-disposition:inline),如果被下载的文件是Office2007的 ...

  10. mysql主从原理及配置

    一.mysql集群架构: 1.一主一从 2.双主 3.一主多从(扩展mysql的读性能) 4.多主一从(5.7开始支持) 5.联机复制 关系图: 二.配置主从用途及条件 2.1用途 1.保障可用性,故 ...