argparse使用方法

官方链接

基本使用方法

  • 创建解析

    1
    2
    import argparse
    parser = argparse.ArgumentParser()
  • 添加参数

    1
    parser.add_argument('square', help="display a square of a given number", type=int)
  • 解析参数

    1
    args = parser.parse_args()
  • 使用参数

    1
    print(args.square ** 2)

如何添加参数

add_argument()可以设置的选项非常多

1
parser.add_argument([], action=[], nargs=[], const=[], default=[], type=[], choices=[], required=[], help=[], metavar=[], dest=[])

但是我们比较常用的是下面这些参数

1
parser.add_argument('--square', type=int, default=1, help='display a square of a given number')

为了可读性,一般选择使用可选参数

可选参数和必选参数的区别

  • 可选参数前面有--或者-, 在命令行中不赋值的话,会传递default的值
  • 必选参数没有--或者-, 必选参数即便是有default值在使用命令行的时候也需要赋值

action参数的作用

  • store: 默认操作,将参数存储在一个变量中,参数更新后,不保留之前的参数值
  • append:存储一个列表,将参数每次的赋值都添加到列表中

例如:

1
2
3
4
5
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo')
args = parser.parse_args()
print(args.foo)

运行 python use_argparse.py --foo 1 --foo 2 输出 2

1
2
3
4
5
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='append')
args = parser.parse_args()
print(args.foo)

运行 python use_argparse.py --foo 1 --foo 2 输出 ['1', '2']

  • count:计算一个关键字参数出现的次数

例如:

1
2
3
4
5
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-v', action='count', default=0)
args = parser.parse_args()
print(args.v)

运行 python use_argparse.py -vvv 输出 3

运行 python use_argparse.py -v -v -v 输出 3

nargs参数的作用

关联不同数目的命令行参数到单一动作,因为 action 是单一项目消耗单一命令行参数

  • N:可以且必须传入 N 个参数,然后被聚集到一个列表中
  • ?:首先从命令行中获取,若没有则从const中获取,仍然没有则从default中获取
  • *、+:任意数量参数
  • argparse.REMAINDER:所有剩余的参数均转化为一个列表转化给此项

例如:

1
2
3
4
5
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('foo', nargs=2)
args = parser.parse_args()
print(args.foo)

运行 python use_argparse.py 1 输出 error

运行 python use_argparse.py 1 2 输出 ['1', '2']

1
2
3
4
5
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('foo', nargs='+')
args = parser.parse_args()
print(args.foo)

运行 python use_argparse.py 1 输出 ['1']

运行 python use_argparse.py 1 2 输出 ['1', '2']

注意事项

导入argparse后如果将.py文件命令为argparse.py,则会报错,修改文件名即可。