您的位置:

详解Python中的add_argument函数

一、参数解析

Python中的 argparse 模块是一个命令行解析工具。它可以用来解析命令行参数,并生成帮助文档。在 argparse 中,add_argument函数是最核心的部分。它负责从命令行指定的参数中解析出参数值。add_argument函数主要包括以下几个方面:

二、add_argument参数窗口

add_argument() 函数定义了命令行选项,如何解析命令行参数以及如何产生帮助信息。下面是 add_argument 中的参数窗口及其说明:

parser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

1. name or flags

命令行参数的名字或者选项,如 foo 或者 -f, --foo。Positional arguments 和 Optional arguments 中的参数具体写法:

  • positional argument
  • parser.add_argument("pos_arg", help="positional arg help")
    
  • optional argument
  • parser.add_argument("-o", "--optional_arg", help="optional arg help")
    

2. action

在参数输入之后的动作,默认为 store。其他可选参数有:

  • store_true, store_false:如果设置了这个值,则存储 True 或 False。
  • append:将遇到每个参数的值依次存储在一个列表中。
  • append_const:将 const 值附加到列表中。
  • count:统计在命令行中出现的次数。

3. nargs

命令行参数需要的值数量。可选参数:

  • nargs=N,表示要获取 N 个值,如 “script.py arg1 arg2 … argN”,这里 nargs=3。
  • nargs=?,表示要获取 0 或 1 个值。
  • nargs='*', 表示获取 0 或多个值。(这个是可以省略的)
  • nargs='+',表示获取 1 或多个值。

4. const

用于一些 action 和 nargs 参数的常量值。默认是 None。

5. default

在命令行没有指定参数时,默认参数的值。

6. type

命令行参数转换为的类型。默认是 None。

7. choices

命令行参数可选的值列表。

8. required

命令行参数是否必需。默认是 False。

9. help

参数描述信息。

10. metavar

在使用帮助文档时,参数的展示名称。意思就是输出的时候,以什么字样输出

11. dest

在使用 parse_args() 解析参数时,参数的名称,默认是 None。

三、add_argument_resolvers

用于自定义解析参数的选项,它允许将参数解析器注册到ArgParser实例中,以添加或修改参数解析的逻辑层。add_argument_resolvers()期望一个可迭代对象作为参数,其中每个元素都是一个解析器。以下示例演示了如何使用 add_argument_resolvers() 来注册一个检查文件是否存在的解析器:

import argparse
import os

class FileExistAction(argparse.Action):
    def __call__(self, parser, namespace, values, option_string=None):
        if not os.path.exists(values):
            parser.error(f"file '{values}' does not exist")
        setattr(namespace, self.dest, values)

parser = argparse.ArgumentParser()
parser.add_argument('--input', action=FileExistAction, help='input file')

args = parser.parse_args()

四、add_arguments函数

add_arguments是add_argument的变形,它迭代着接收 argument groups 并一次性将它们添加到 ArgumentParser 对象中。例如:

parser = argparse.ArgumentParser()

group = parser.add_argument_group('Group 1')
group.add_argument(...)

group = parser.add_argument_group('Group 2')
group.add_argument(...)

五、结尾

以上就是Python中 add_argument 函数的详解。在 argparse 模块中,add_argument函数是实现命令行解析工具的核心部分,了解其参数和使用方法对命令行应用开发非常重要。