python argparse:命令行参数解析详解

简介

本文介绍的是argparse模块的基本使用方法,尤其详细介绍add_argument内建方法各个参数的使用及其效果。

本文翻译自argparse的官方说明,并加上一些笔者的理解

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))

如上示例,argparse模块的基本使用包含5个步骤:

  1. import模块:import argparse
  2. 获解析器对象:argparse.ArgumentParser
  3. 利用解析器对象内建方法,添加参数解析规则:add_argument
  4. 利用解析器对象内建方法,开始解析参数,获取解析结果对象:parse_args
  5. 从解析结果对象中,获取参数值:parse_args

解析器类(ArgumentParser)

在第2步中,我们通过ArgumentParser()函数的调用获取了解析器对象ArgumentParser

在了解解析器对象的各个成员之前,我们先对一段正常的说明文本进行区间划分

# usage字段
usage: 程序名 [-h|--help] .....

# Description字段
程序功能描述

# 位置参数说明(必选)
positional arguments:
 ...
 
# 可选参数说明
optional arguments:
...

# 补充说明字段
...

例如

usage: PROG [-h] [--foo [FOO]] bar [bar ...]

bar help

positional arguments:
 bar          bar help

optional arguments:
 -h, --help   show this help message and exit
 --foo [FOO]  foo help
 
 And that's how you'd foo a bar

关于位置参数与可选参数的理解,参考下一章节:添加参数解析规则

在上述的区间划的认识下,我们再来 看看解析器对象的成员及其功能
名字 默认值 功能
prog sys.argv[0] -h时显示的程序名
usage - usage字段描述
description None description字段描述
epilog None 补充字段描述
parents None 从父(公共)解析器中继承所有的参数选项
formatter_class None 定制说明文本的显示风格
prefix_class - 定制前缀字符,例如前缀"-b"改为“+b"
add_help True 是否使能显示参数 -h --help
allow_abbrev True 是否支持长参数
fromfile_prefix_chars None
argument_default None
conflict_handler None

比较常用的是description,例如:

parser = argparse.ArgumentParser(description='Process some integers.')

或者

parser = argparse.ArgumentParser()
parser.descritpioin="Process some integers."

添加参数解析规则(add_argument)

add_argument是解析器类ArgumentParser的内建方法,用于向解析器添加参数解析规则

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

内建方法支持以下的关键字,我们会对每一个关键字及其效果做进一步说明

关键字 简介
name or flags 参数名或者"-/--"开头的选项,例如foo或者-f, --foo
action 匹配到选项后的行为
nargs 选项跟随的参数个数
const 在某些actionnargs下,使用的固定值
default 默认值
type 参数类型
choices 可选的参数值范围
required 选项必选or可选
help 参数描述
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值