Python基础(7) argparse

0. 前言

  • 官方文档
  • 官方教程:Argparse Tutorial
  • 作用:Python的内置命令行工具。
  • 使用流程:
    1. 构建argparse.ArgumentParser实例。
    2. 通过调用上述实例的add_argument方法,添加命令行参数。
    3. 通过上述实例的parse_args方法解析参数。

1. 构建ArgumentParser实例

  • 学习构建实例的本质,就是学习其构造器中每个参数的含义。
  • prog
    • 作用:指定程序的名称,可用于description等其他参数中中,通过%(prog)s来指定。
    • 默认值:sys.argv[0]
  • usage
    • 作用:简单描述命令的作用。
    • 默认值:%(prog)s [options...],大概这个形式。
  • description:命令的详细描述。
  • epilog:帮助文档尾部的信息。
  • parents
    • 作用:指定父级ArgumentParser实例列表。可以使用父类定义的参数。
    • 注意:由于默认不允许有重复的参数,所以父级的add_help一般设置为False
  • formatter_class:用于指定帮助文档格式。
  • prefix_chars
    • 作用:指定 使用可选参数时 的前置字符。
    • 默认值:-
  • fromfile_prefix_chars
    • 作用:当命令过长时,可以放在文件中,命令行指定文件名时,必须先确定前缀。
    • 默认值:空。即不指定文件作为命令的一部分。
  • argument_default:全局参数默认值,默认为None
  • conflict_handler:若有参数名冲突时,是否报错。默认会报错。
  • add_help:是否添加-h以及--help
  • allow_abbrev
    • 作用:若没有冲突的情况下,是否允许使用参数名称缩写指定参数。
    • 默认值:允许。

2. add_argument方法

  • name or flags
    • add_argument的最开始的所有位置参数,都是参数名称。
    • 有两种形式:
      • 位置参数:'f':前面没有 -,必选参数。
        • 可以定义在可选参数后面,但使用的时候必须在最开始指定。
      • 可选参数:'-f', '--foo',前面有-
        • 测试了一下,应该没有限定在一个-后只能有一个字母,即-foo也是可以的,-foo-foo也是可以的。
        • 如果命名为--foo-foo,则在后续使用时-要转换为下划线_,即变量名为args.foo_foo
    • 注意:位置参数和可选参数不能同时指定。如add_argument('a', '-f')是错误的。
  • action
    • store:默认值,保存参数
    • store_const:保存const中的常量。
    • store_true & store_falsestore_const的特殊形式,表示对应的参数是否存在。
    • append:将所有值保存为列表。
    • append_const:将const中的参数保存。
    • version:指定版本,需要再指定一个参数version
    • help:发音所有帮助信息。
    • count:指定关键字出现的次数。
      • 例如:parser.add_argument("-v", "--verbosity", action="count")
        • -v:1
        • -vv:2
        • --verbosity --verbosity:2
        • 不指定:None。可通过设置 default 来避免获得None
  • nargs
    • 指定该参数的参数个数。
    • 整数N,表示至少有多少参数。
    • ?表示0或1个参数。
    • *0或所有参数。
    • +所有参数,至少一个。
  • const:指定参数
  • default:指定默认值。
  • type:指定数据类型。
  • choices:参数值必须在某个集合中。
  • required:设置是否必须。
  • help:介绍参数。
  • metavar:帮助文档中的默认参数名。
  • dest:在args中的属性名称。

3. 实例

  • 实例一:
def parse_args():
    parser = argparse.ArgumentParser(description='Process some integers.')
    parser.add_argument('-i', `--integer`, type=int, default=0)
    parser.add_argument('-s', `--string`, type=str, default="test")
    group.add_argument(`--flag`, action="store_true")
    group.add_argument(`--float-num`, type=float, default=.5, help="")
    parser.add_argument("x", type=int, help="the base")
    parser.add_argument("y", type=int, help="the exponent")
    
    args = parser.parse_args()
  • 实例二
# prog.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
parser.add_argument("-v", "--verbosity", action="count", default=0)
args = parser.parse_args()
answer = args.x**args.y
if args.verbosity >= 2:
    print("Running '{}'".format(__file__))
if args.verbosity >= 1:
    print("{}^{} == ".format(args.x, args.y), end="")
print(answer)

# $ python3 prog.py 4 2
# 16
# $ python3 prog.py 4 2 -v
# 4^2 == 16
# $ python3 prog.py 4 2 -vv
# Running 'prog.py'
# 4^2 == 16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值