python中argparse模块

参考官方文档https://docs.python.org/zh-cn/3/library/argparse.html#nargs

python中参数解释器,使用流程:

import argparse
parser = argparse.ArgumentParser() ## 新建参数解释器对象
parser.add_argument('-v') ## 添加参数
args = parser.parse_args(['-v', '3'])### 参数赋值,也可以通过终端赋值
'''
python test.py -v 
'''

1. argparse.ArgumentParser()

class argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True, exit_on_error=True)
参数很多,一般都选默认。有时会设置usage–描述程序的用法.

2. parser.add_argument()

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 - 被一些 action 和 nargs 选择所需求的常数

default - 当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值。默认值

type - 命令行参数应当被转换成的类型

choices - 可用的参数的容器

required - 此命令行选项是否可省略 (仅选项可用)。

help - 一个此选项作用的简单描述。

metavar - 在使用方法消息中使用的参数值示例。

dest - 被添加到 parse_args() 所返回对象上的属性名

2.1 name or flags 参数名称

参数可以是位置参数,也可以是可选参数。parser.add_argument()调用时,根据名称前有无中划线‘-’,确定参数是位置参数还是可选参数

  • 可选参数
    parser.add_argument('-f', '--foo')
  • 位置参数可以这么创建:
    parser.add_argument('bar')
    当 parse_args() 被调用,选项会以 - 前缀识别,剩下的参数则会被假定为位置参数。位置参数必须被赋值,可选参数可根据情况不赋值。

2.2 action 动作类型

可选值为: store, store_const,store_true, store_false

  • store 默认值,设置的值都会保存
  • store_const存储被 const 命名参数指定的值
    在这里插入图片描述
    foo未设置值,但是在参数列表中加了--foo,则foo=42,如果调用的时候,不传参数列表,foo=None
    在这里插入图片描述

这点与parser.add_argument('--foo', default=42)不同,此时,传个空的参数列表 给foo,foo的值为42。
在这里插入图片描述
如果传参数却不赋值,会报错
在这里插入图片描述

  • store_truestore_falsestore_const的特殊值,分别作为存储TrueFalse
    在这里插入图片描述
    fooaction=store_true,传参列表中加了--foo,则foo=True
    baraction=store_false,传参列表中加了--bar,则bar=False
    bazaction=store_false,传参列表中没加--baz,则bar取与他存储值相反的值False

2.3 nargs 参数个数

  • N - 表示前面的参数接收N个参数
  • ? - 接收0或1个参数
  • * - 接收0或多个参数
  • + - 接收1或多个参数,未传参数时,报错

2.3.1 ?配合defaultconst使用

nargs=?的变量,赋值的参数可以有0或1个在这里插入图片描述

2.3.1 *在这里插入图片描述

2.4 type 类型

type 关键字允许执行任何必要的类型检查和类型转换
foo的类型是int,bar的类型是str.两个参数传的值相同,但因为type类型不同,收到的参数值的类型不同

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', type=int)
parser.add_argument('--bar', type=str)
args = parser.parse_args(['--foo','10','--bar','10'])
print(args)
>>>Namespace(bar='10', foo=10)

2.5 choice

从choice可取值的范围内设置一个值,否则会报错。
在这里插入图片描述
配合type,检查参数类型。

任何内部的 - 字符都将被转换为 _ 字符以确保字符串是有效的属性名称

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值