argparse模块--python模块

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 值的特殊用例;它们的默认值分别为 True 和 False
  • '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

发布了39 篇原创文章 · 获赞 1 · 访问量 1123

猜你喜欢

转载自blog.csdn.net/qq_39421693/article/details/104990452