argparse

作者: 脏脏包盛 | 来源:发表于2019-04-20 11:59 被阅读0次

    就像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=<built-in function sum>, 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

          本文链接:https://www.haomeiwen.com/subject/myukgqtx.html