zoukankan      html  css  js  c++  java
  • python argparse详解

    1.argparse模块作用
    用于解析命令行参数

    2.位置参数和可选参数
    运行以下代码:

    import argparse
    parser = argparse.ArgumentParser()
    args = parser.parse_args()
    

    运行结果:

    参数为-h或--help时,parser.parse_args()会输出命令行的位置参数position arguments和可选参数optional arguments
    位置参数:按照参数的顺序解析,参数必填
    可选参数:以-或--开头,参数非必填

    位置参数,可选参数示例如下:

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("num", type=int, help="position")
    parser.add_argument("--mode", "-m", type=int, help="optional")
    args = parser.parse_args()
    

    运行结果:

    num为一个位置参数,type表示参数的类型,参数默认都是string类型的,help表示参数的描述
    --mode,以--开头,为一个可选参数,可以有多个别名(--mode,-m)
    可选参数,不是必填的,一般用来作条件分支,如下所示:

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("num", type=int, help="position")
    parser.add_argument("--mode", "-m", type=int, help="optional")
    args = parser.parse_args()
    result = 0
    if args.mode == 1:
        result = args.num ** 2
    else:
        result = args.num * 2
    print(result)
    

    运行结果:

    当mode=1时,计算num的平方,否则,计算num*2

    指定参数的范围,choice

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("num", type=int, choices=[5, 6, 7], help="position")
    parser.add_argument("--mode", "-m", action="store_true", help="optional")
    args = parser.parse_args()
    result = 0
    if args.mode:
        result = args.num ** 2
    else:
        result = args.num * 2
    print(result)
    

    运行结果:

    3.可选参数
    位置参数没有太多要讲的,必填,类型必须和定义的一致(默认为string),否则会报错。
    可选参数有以下几种action
    1)store_true
    有参数时为true,没有为false,有参数时不能指定参数的值

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("num", type=int, help="position")
    parser.add_argument("--mode", "-m", action="store_true", help="optional")
    args = parser.parse_args()
    result = 0
    if args.mode:
        result = args.num ** 2
    else:
        result = args.num * 2
    print(result)
    

    运行结果:

    2)count
    数值,-m表示1,-mm或-m -m表示2,以此类推

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("num", type=int, choices=[5, 6, 7], help="position")
    parser.add_argument("--mode", "-m", action="count", help="optional")
    args = parser.parse_args()
    result = 0
    if args.mode == 1:
        result = args.num ** 2
    elif args.mode == 2:
        result = args.num * 2
    else:
        result = args.num
    print(result)
    

    不加参数,表示None,可以设置默认count,则-m表示默认值+1

    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("num", type=int, help="position")
    parser.add_argument("--mode", "-m", action="count", default=1, help="optional")
    args = parser.parse_args()
    result = 0
    if args.mode == 1:
        result = args.num ** 2
    elif args.mode == 2:
        result = args.num * 2
    else:
        result = args.num
    print(result)
    

    运行结果:

  • 相关阅读:
    8.7题解
    2019.9.16 csp-s模拟测试44 反思总结
    洛谷P3168 [CQOI2015]任务查询系统
    洛谷P2468 [SDOI2010]粟粟的书架
    2019.8.14 NOIP模拟测试21 反思总结
    2019.8.13 NOIP模拟测试19 反思总结
    2019.8.12 NOIP模拟测试18 反思总结
    大约是个告别【草率极了】
    2019.8.10 NOIP模拟测试16 反思总结【基本更新完毕忽视咕咕咕】
    2019.8.9 NOIP模拟测试15 反思总结
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/9155611.html
Copyright © 2011-2022 走看看