python library argparse

python library argparse

argparse 是 Python 用于处理脚本输入参数的标准库

1. 创建解析器 (ArgumentParser)

argparse.ArgumentParser(description=None...)

通常我们只会指定 description 参数,但有时还会使用其他一些参数,

下面是一些比较常用的:

  1. prog 参数,字符串类型,表示该程序的名称,在随后的 version 动作中可以用 %(prog)s 表示该参数的值
  2. add_help, boolean 类型,默认为 True, 用于指定是否添加 -h/--help 参数解析
  3. prefix_chars, 字符串类型,默认为 -, 用于标识 options,UNIX 中默认用 - 标识参数,否则为参数对应的值。但我们也可以添加一些其他的标识符,如 prefix_chars = '-+/'

2. 添加解析参数

argparse 库参数解析遵循 GUN/POSIX 格式,option 和对应的 value 可以混合出现。

我们通常使用类 ArgumentParser 的方法 add_argument()

常见参数:

  1. option_string : 匹配的参数名,字符串类型,比如 "-b", "--help" , "--version" 等,该匹配参数名不能重复,否则会报错

  2. action: 匹配参数成功会触发的动作,字符串类型,
    下表为 argparse 内建的 6个动作

    Action Function
    “store” 在进行可选的类型转换后,保存该值,默认动作
    “store_const” 保存规定的定值,而不是参数解析获得的值,用于实现非布尔型的命令行标志
    “store_true/store_false” 保存合适的布尔值,通常用于实现布尔值切换
    “append” 将解析值保存到列表。如果某个参数重复出现,多个值都会保存下来
    “append_const” 将规定的定值保存到列表
    “version” 打印程序的版本信息,并退出
  3. dest : 目标变量名,字符串类型,随后可以在返回的解析列表通过该变量名。
    注意:

    • 如果两个 argument 对应存储的变量名相同,那么解析的值都会影响这个变量对应的值
    • 如果不指定,则返回的参数解析列表用 option_string 去掉标识符的部分作为变量名。
  4. type: 类型转换函数,用于将获得的字符串类型的值转为我们需要的类型,如 type = int ,将获得的字符串通过 int() 函数转为整形

  5. const: 存储的定值,对 store_const 或者 append_const 动作类型有效,类型不限

  6. version : 字符串类型,返回版本信息,
    注: %(prog)s 对应的值: 如果初始化类时,没有指定 prog 参数,则会返回 sys.argv[0] 的值,即脚本名称,否则返回 prog 参数的值

3. 获得解析参数

parse_args(args=None) , 其中 args 是 list 类型

如果不定义参数 args ,则默认解析 sys.argv[1:]

返回的类型为 Namespace 类型

下面是一个具体的例子,parser.py 文件

cmd 命令行运行 python parser.py -h

输出如下:

usage: learn [-h] [-s SIMPLE_VALUE] [-c] [-t] [-f] [-a COLLECTION] [-A] [-B]
             [--version]

optional arguments:
  -h, --help       show this help message and exit
  -s SIMPLE_VALUE  Store a simple value
  -c               Store a constant value
  -t               Set a switch to true
  -f               Set a switch to false
  -a COLLECTION    Add repeated values to a list
  -A               Add different values to list
  -B               Add different values to list
  --version        show program's version number and exit

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d 博主赞过: