zoukankan      html  css  js  c++  java
  • python之getopt模块使用

    官方介绍地址: https://docs.python.org/3.1/library/getopt.html

    实用方向:

      处理命令行参数的一个方法,简单好用。

    方法:

      getopt模块总共有2个函数,分别为:

    • getopt.getopt
    • getopt.gnu_getopt

    简单使用:

    getopt这个函数常用,简单看一下这个函数的使用:

    getopt.getopt(argsshortoptslongopts=[])

    看这几个参数,

    args为:脚本接受的参数,传入为list类型,此处与sys.argv连并使用,sys.argv可参考:https://www.cnblogs.com/dflblog/p/12050060.html

    shortopts:短参数。就是参考:python3 test.py -v ,这个-v就是需要用到的短参数。

    longopts=[]:长参数。就是参考:python3 test.py --v,两个-的就是需要用到的长参数。

    先简单有一个印象。

    那后面需要用到的参数怎么传入,怎么处理呢?

    参数处理:

    import sys
    import getopt
    
    opts = getopt.getopt(sys.argv[1:],"-h",["help"])
    print(opts)

    我们在命令行跑一下:

    GL$python3 111.py --help
    ([('--help', '')], [])
    GL$python3 111.py -h ([('-h', '')], [])

    打印了如上的内容,我们依次看一下

    1、我们为什么要用sys.argv[1:]呢?是因为第0个是函数本身,所以接受除本身之外的所以参数

    2、返回的是一个tuple,第一个list我们可以理解是传入的--h,加到了一个list里,第二个list则是-h后面加的参数,这里没有加,所以为空

    下面来实践一下:

    import getopt
    import sys
    
    opts,args = getopt.getopt(sys.argv[1:],'-h-w:-v',['help','version'])
    for opt_name,opt_value in opts:
    
        if opt_name in ('-h','--help'):
            print(opt_name,"this is help")
            exit()
    
        if opt_name == '-w':
            print("-w:",opt_value)
            exit()
    
        if opt_name in ('-v','--version'):
    
            print('version:0.01')
            exit()

    运行起来看看:

    GL$python3 111.py -w 123-w: 123GL$python3 111.py -h
    -h this is help
    GL$python3 111.py -v
    version:0.01GL$python3 111.py --help
    --help this is help

    由上,又出现了个新东西,shortopts里面怎么多了个冒号呢??那个是干啥的?

    其实,从上面的例子也可以简单看出来,加冒号意思就是-w后面要加参数,不加冒号就不用加参数,longopts也是一样,冒号用等号代替。

    好,这里都已经有些了解了。那么后面的args,是干啥的呀。还有opts又是干啥的呀。

    opts 就是分析出的格式信息。args 为不属于格式信息的剩余的命令行参数。

    opts 是一个两元组的列表。(选项串, 附加参数) 。如果没有则为空。

    下面看例子:

    我们在最开头打印args,也就是加一行  print(args),我就不贴代码了。

    运行起来:

    GL$python3 111.py --help ssss
    ['ssss']
    --help this is help

    /GL$python3 111.py -w 123 123 ['123'] -w: 123

    多余的未识别的就成了args里面的内容了。

  • 相关阅读:
    IXmlSerializable With WCFData Transfer in Service Contracts
    Difference Between XmlSerialization and BinarySerialization
    Using XmlSerializer (using Attributes like XmlElement , XmlAttribute etc ) Data Transfer in Service Contracts
    Introducing XML Serialization
    Version Tolerant Serialization
    Which binding is bestWCF Bindings
    Data Transfer in Service Contracts
    DataContract KnownTypeData Transfer in Service Contracts
    Using the Message ClassData Transfer in Service Contracts
    DataContract POCO SupportData Transfer in Service Contracts
  • 原文地址:https://www.cnblogs.com/dflblog/p/12050430.html
Copyright © 2011-2022 走看看