欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > >内容正文

python

python中argparse模块 -凯发k8官方网

发布时间:2025/1/21 15 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

参考官方文档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_true 和store_false 是store_const的特殊值,分别作为存储true 和 false

    foo的action=store_true,传参列表中加了--foo,则foo=true
    bar的action=store_false,传参列表中加了--bar,则bar=false
    baz的action=store_false,传参列表中没加了--baz,则bar取与他存储值相反的值false

2.3 nargs 参数个数

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

2.3.1 ?配合default和const使用

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,检查参数类型。

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

与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是凯发k8官方网为你收集整理的的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图