Skip to content

python argparse

python的argparse可以把脚本后面的参数有效的组织起来,比sys.argv更灵活

arguments

python
import argparse

parser = argparse.ArgumentParser(description='test argparse')
parser.add_argument('--start_time', type=str, required=True)
parser.add_argument('--end_time', type=str)
parser.add_argument('--perpage', type=int, default=20)

parser.print_help()

这段代码使用了 Python 的 argparse 模块来解析命令行参数。让我们逐行分析这段代码:

python
import argparse

首先,导入了 argparse 模块,这是 Python 内置的用于解析命令行参数的库。

python
parser = argparse.ArgumentParser(description='test argparse')

创建了一个 ArgumentParser 对象,命名为 parser。ArgumentParser 对象用于定义和解析命令行参数。在这里,description 参数是一个可选的描述性字符串,用于解释脚本的目的。

python
parser.add_argument('--start_time', type=str, required=True)
parser.add_argument('--end_time', type=str)
parser.add_argument('--perpage', type=int, default=20)

使用 add_argument() 方法向 parser 对象添加命令行参数的定义。这里定义了三个参数:--start_time、--end_time 和 --perpage。

  • --start_time 是一个字符串类型的参数,并且使用 required=True 表示它是必需的,必须提供值。
  • --end_time 也是一个字符串类型的参数,但它没有设置 required=True,因此它是可选的。
  • --perpage 是一个整数类型的参数,并且使用 default=20 表示如果未提供值,将使用默认值 20。
python
parser.print_help()

调用 print_help() 方法将打印帮助信息,其中包含了命令行参数的使用说明。这个方法可以用来展示命令行参数的帮助信息给用户。

通过运行这段代码,如果在命令行中输入 python script.py --help,将会打印出命令行参数的使用说明。

parse arguments

argparse有两个方法可以解析给定的参数

  • parse_args
python
arg = parser.parse_args()

arg是一个 argparse.Namespace 对象,可以直接getattr或者点来获取数据,当给定的参数不属于add_argument会抛出错误, 推荐使用这种方式.

error: unrecognized arguments: --test abc
  • parse_know_args
python
arg, unkonw = parser.parse_know_args()

parse_know_args当给出错误的参数 --test=abc后,不会抛出错误, 有很强的容错性, 请根据业务来合理使用这些方法

其余字段

python
parser.add_argument('--start_time', metavar='', type=str, required=True, help="start time")
  • metavar

通过metavar可以控制帮助信息的显示, 如果不设置为空,则会出现下面的情况

options:
  --start_time START_TIME
                        start time
  • help

help 用来增加说明文字,比如上面的start time

Reference