argparse

就像linux 后面的参数一样。
argparse模块可以轻松编写用户友好的命令行界面。该程序定义了它需要的参数,argparse 并将弄清楚如何解析它们sys.argvargparse 当用户给程序提供无效参数时,该模块还会自动生成帮助和使用消息并发出错误

示例

以下代码是一个Python程序,它获取整数列表并生成总和或最大值:

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))

假设上面的Python代码保存在一个名为的文件中prog.py,它可以在命令行运行并提供有用的帮助消息:

$ python prog.py -h
usage: prog.py [-h] [--sum] N [N ...]

Process some integers.

positional arguments:
 N           an integer for the accumulator

optional arguments:
 -h, --help  show this help message and exit
 --sum       sum the integers (default: find the max)

使用适当的参数运行时,它会输出命令行整数的总和或最大值:

$ python prog.py 1 2 3 4
4

$ python prog.py 1 2 3 4 --sum
10

如果传入无效参数,则会发出错误:

$ python prog.py a b c
usage: prog.py [-h] [--sum] N [N ...]
prog.py: error: argument N: invalid int value: 'a'

以下部分将引导您完成此示例。
1.创建解析器创建一个ArgumentParser对象

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

2.添加参数
使用add_argument()方法填充有关程序参数的信息。parse_args()调用时会存储和使用此信息

>>> 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)')

稍后,调用parse_args()将返回具有两个属性的对象,integers并且accumulate。该integers属性将是一个或多个整数的列表,该accumulate属性将是sum()函数(如果--sum在命令行中指定)或max()函数(如果不是)。
3.解析参数
ArgumentParser通过该parse_args()方法解析参数 。这将检查命令行,将每个参数转换为适当的类型,然后调用相应的操作。在大多数情况下,这意味着Namespace将从命令行解析的属性构建一个简单的对象:

>>> parser.parse_args(['--sum', '7', '-1', '42'])
Namespace(accumulate=, integers=[7, -1, 42])

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 )

创建一个新ArgumentParser对象。所有参数都应作为关键字参数传递。每个参数在下面都有自己更详细的描述,但简而言之,它们是:

  • PROG -程序的名称(默认:sys.argv[0]
  • usage - 描述程序用法的字符串(默认值:从添加到解析器的参数生成)
  • description - 参数help之前显示的文本(默认值:none)
  • epilog - 参数help后显示的文本(默认值:none)
  • parents - ArgumentParser还应包含其参数的对象列表
  • formatter_class - 用于自定义帮助输出的类
  • prefix_chars - 前缀可选参数的字符集(默认值:' - ')
  • fromfile_prefix_chars -该组文件前缀字符从额外的参数应该读(默认值:None
  • argument_default -为参数的全局默认值(默认值:None
  • conflict_handler - 解决冲突选项的策略(通常是不必要的)
  • add_help -添加-h/--help选项解析器(默认值:True
  • allow_abbrev - 如果缩写是明确的,则允许缩写长选项。(默认值:True

在版本3.5中更改:添加了allow_abbrev参数。

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 - 某些操作和nargs选择所需的常量值。
  • default - 如果命令行中不存在参数,则生成的值。
  • type - 应转换命令行参数的类型。
  • choices - 参数允许值的容器。
  • required - 是否可以省略命令行选项(仅限选项)。
  • help - 对参数的作用的简要说明。
  • metavar - 用法消息中参数的名称。
  • dest - 要添加到返回的对象的属性的名称 parse_args()

name of flags

add_argument()方法必须知道是否需要可选参数,如-f--foo,或位置参数,如文件名列表。add_argument()因此,传递给的第一个参数 必须是一系列标志或简单的参数名称。例如,可以创建一个可选参数,如:

>>> parser.add_argument('-f', '--foo')
>>> parser.add_argument('bar')

parse_args()被调用时,可选的参数将被识别-的前缀,而其余的参数将被认为是位置:
可选参数就是可以输入也可以不输入,位置参数表示必须有的参数

>>> parser = argparse.ArgumentParser(prog='PROG')
>>> parser.add_argument('-f', '--foo')
>>> parser.add_argument('bar')
>>> parser.parse_args(['BAR'])
Namespace(bar='BAR', foo=None)
>>> parser.parse_args(['BAR', '--foo', 'FOO'])
Namespace(bar='BAR', foo='FOO')
>>> parser.parse_args(['--foo', 'FOO'])
usage: PROG [-h] [-f FOO] bar
PROG: error: the following arguments are required: bar

default

可以在命令行中省略所有可选参数和一些位置参数。值默认为的default关键字参数 指定在命令行参数不存在时应使用的值。对于可选参数,在命令行中不存在选项字符串时使用该值:add_argument()None``default

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', default=42)
>>> parser.parse_args(['--foo', '2'])
Namespace(foo='2')
>>> parser.parse_args([])
Namespace(foo=42)

你可能感兴趣的:(argparse)