zoukankan      html  css  js  c++  java
  • python:argparse命令行解析模块详解

    argparse命令行解析模块学习

    import argparse
    parser = argparse.ArgumentParser() #类似于初始化吧
    parser.parse_args()  #解析参数
    //默认存在-h,--help参数
    

    输出如下

    python test.py --help
    usage: prog.py [-h]
    optional arguments:
    -h, --help  show this help message and exit
    

    接下来

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("echo") #定义了一个名为echo的参数,默认必选
    args = parser.parse_args()
    print(args.echo)
    //在这里echo是positional arguments,中文翻译是定位参数,也就是不需要使用-或者--就可用
    

    输出示例

    python test.py flag
    flag
    

    --
    接下来看下面这段代码

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("--verbosity", help="increase output verbosity") #help参数,是你输入-h或者--help时会显示的这个--verbosity的帮助信息
    args = parser.parse_args()
    if args.verbosity:  #这里就是判断参数是否存在,如果存在就执行下面语句,就可以用来实现一些功能
    	print("verbosity turned on")
    

    然后看输出

    python test.py --verbosity test
    verbosity turned on
    //这里必须指定一个输入,这里我的输入是test,我还打印了下args.verbosity 输出是test
    

    再看改了点的

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("--verbosity", help="increase output verbosity",action="store_true") #增加了一个action属性
    args = parser.parse_args()
    if args.verbose:
    	print("verbosity turned on")
    //这个直接python --verbosity 就可以运行if后面的语句,而不用指定参数
    

    -v短参数

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("-v", "--verbose", help="increase output verbosity",action="store_true")
    args = parser.parse_args()
    if args.verbose:
    	print("verbosity turned on")
    

    还可以指定type,默认参数type为str

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("square", help="display a square of a given number",type=int)
    args = parser.parse_args()
    print(args.square**2) 
    //这就要求输入必须参数必须是int,否则会报错
    

    还一个属性choices=[],定义可选项,再用if语句判断,示例如下

    import argparse
    
    
    parser = argparse.ArgumentParser()
    parser.add_argument("square", type=int,
                        help="display a square of a given number")
    parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2],
                        help="increase output verbosity")
    args = parser.parse_args()
    answer = args.square**2
    if args.verbosity == 2:
        print ("the square of {} equals {}".format(args.square, answer))
    elif args.verbosity == 1:
        print ("{}^2 == {}".format(args.square, answer))
    else:
        print (answer)
    

    属性default,可以指定当不给出参数时,默认的参数


    整段程序的帮助信息

    parser = argparse.ArgumentParser(description="calculate X to the power of Y")
    

    还一个互斥组

    group = parser.add_mutually_exclusive_group()
    

    往这里添加的参数不能同时出现,最多出现一个,或者都不出现

  • 相关阅读:
    寒假Day37:设计模式(封装+继承+多态等)
    INF ClassInstall32 Section详解
    VS2008编译的程序运行提示“由于应用程序配置不正确,应用程序未能启动”
    INF Models Section
    INF DDInstall.Services Section
    INF ClassInstall32.Services Section详解
    INF DDInstall Section
    INF SourceDisksNames Section 和 SourceDisksFiles Section详解
    sys文件查看DbgPrint函数打印的信息
    IRP(I/O Request Package)详解
  • 原文地址:https://www.cnblogs.com/GH-D/p/8482817.html
Copyright © 2011-2022 走看看