欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

argparse模块--python模块

程序员文章站 2022-07-10 20:19:00
...

argparse模块:

介绍:argparse 模块可以让人轻松编写用户友好的命令行接口;程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数;argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。

  • ArgumentParser对象
  • add_argument()方法
  • parse_agrs()方法

开篇示例:

import argparse

parser = argparse.ArgumentParser(description="calculate X to the power of Y")
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true")
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
args = parser.parse_args()
answer = args.x**args.y

if args.quiet:
    print(answer)
elif args.verbose:
    print("{} to the power {} equals {}".format(args.x, args.y, answer))
else:
    print("{}^{} == {}".format(args.x, args.y, answer))

示例结果:

$ python3 prog.py --help
usage: prog.py [-h] [-v | -q] x y

calculate X to the power of Y

positional arguments:
  x              the base
  y              the exponent

optional arguments:
  -h, --help     show this help message and exit
  -v, --verbose
  -q, --quiet

1)ArgumentParser对象:

class argparse.ArgumentParser(

          prog=Noneusage=Nonedescription=Noneepilog=Noneparents=[]

          formatter_class=argparse.HelpFormatterprefix_chars='-',

          fromfile_prefix_chars=Noneargument_default=Noneconflict_handler='error'

          add_help=Trueallow_abbrev=True

)

  • prog - 程序的名称(默认:sys.argv[0])
  • usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
  • description - 在参数帮助文档之前显示的文本(默认值:无)
  • epilog - 在参数帮助文档之后显示的文本(默认值:无)
  • parents - 一个 ArgumentParser 对象的列表,它们的参数也应包含在内
  • formatter_class - 用于自定义帮助文档输出格式的类
  • prefix_chars - 可选参数的前缀字符集合(默认值:'-')
  • fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None)
  • argument_default - 参数的全局默认值(默认值: None)
  • conflict_handler - 解决冲突选项的策略(通常是不必要的)
  • add_help - 为解析器添加一个 -h/--help 选项(默认值: True)
  • allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:True)

示例:

  • 创建一个解析器:
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)')
  • 解析参数:
parser.parse_args(['--sum', '7', '-1', '42'])
#通常 parse_args() 会被不带参数调用,而 ArgumentParser 将自动从 sys.argv 中确定命令行参数

2)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() 所返回对象上的属性名

>name or flags:add_argument() 方法必须知道它是否是一个选项

add_argument() 方法必须知道它是否是一个选项
ArgumentParser 对象将命令行参数与动作相关联、
存储被 const 命名参数指定的值

>action:ArgumentParser 对象将命令行参数与动作相关联(例举一些常用action):

  • 'store' - 存储参数的值
  • 'store_const' -存储被 const 命名参数指定的值
  • 'store_true' and 'store_false' - 这些是 'store_const' 分别用作存储 True 和 False 值的特殊用例;它们的默认值分别为 False 和 True
  • 'append' - 存储一个列表,并且将每个参数值追加到列表中
  • 'append_const' - 这存储一个列表,并将const命名参数指定的值追加到列表中
  • 'count' - 计算一个关键字参数出现的数目或次数
  • 'help' - 打印所有当前解析器中的选项和参数的完整帮助信息,然后退出
  • 'version' - 期望有一个 version= 命名参数在 add_argument()调用中,并打印版本信息并在调用后退出
  •  'extend'- 它存储一个列表,并将每个参数值扩展到列表

>nargs:ArgumentParser 对象通常关联一个单独的命令行参数到一个单独的被执行的动作:

  • N (一个整数):命令行中的 N 个参数会被聚集到一个列表中
  • '?' :如果可能的话,会从命令行中消耗一个参数,并产生一个单一项。如果当前没有命令行参数,则会产生 default值;nargs='?' 的一个更普遍用法是允许可选的输入或输出文件
  • '*'。所有当前命令行参数被聚集到一个列表中。注意通过 nargs='*' 来实现多个位置参数通常没有意义,但是多个选项是可能的
  • '+'。和 '*' 类似,所有当前命令行参数被聚集到一个列表中。另外,当前没有至少一个命令行参数时会产生一个错误信息
  • argarse.REMAINDER。所有剩余的命令行参数被聚集到一个列表中

 

3)parse_agrs()方法:

(说明:获取解析的参数,返回一个对象

ArgumentParser.parse_args

        args = None

        namespace = None

 

  • arg:要解析的字符串列表。默认值取自 sys.argv
  • namespace:带有属性的对象。默认值为一个新的空 Namespace对象

 

argparse入门教程:https://docs.python.org/zh-cn/3/howto/argparse.html?highlight=argparse

argparse模块详细教程:https://docs.python.org/3/library/argparse.html#example

相关标签: python模块