美文网首页
python命令行解析模块argparse

python命令行解析模块argparse

作者: 听风1996 | 来源:发表于2018-05-15 17:23 被阅读5次

    英文原文地址:
    https://docs.python.org/3.4/library/argparse.html#module-argparse
    https://docs.python.org/3.4/howto/argparse.html#id1

    一、argparse模块

    python标准库模块argparse用于解析命令行参数,编写用户友好的命令行界面,该模块还会自动生成帮助信息,并在所给参数无效时报错。
    首先看一个例子:

    #arg_parse.py
    #coding:utf-8
    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))
    

    将上述代码保存为arg_parse.py,在命令行运行该脚本。使用-h选项可以查看帮助信息

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

    如果不指定–sum选项,则找出输入参数中的最大值,否则求和。

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

    二、ArgumentParser对象

    使用argparse的第一步是创建一个 ArgumentParser对象,这个ArgumentParser对象中会保存所有将命令行参数转为python数据类型的必需信息。使用 argparse.ArgumentParser创建ArgumentParser对象

    argparse.ArgumentParser(prog=None, 
                            usage=None, 
                            epilog=None, 
                            parents=[], 
                            formatter_class=argparse.HelpFormatter, 
                            prefix_chars='-',                            
                            fromfile_prefix_chars=None,              
                            argument_default=None,
                            conflict_handler='error', 
                            add_help=True)
    

    下面介绍上述函数几个常用的参数

    1.prog

    默认情况下, ArgumentParser对象根据sys.argv[0]的值(不包括路径名)生成帮助信息中的程序名。

    $ cat myprogram.py
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument('--foo', help='foo help')
    args = parser.parse_args()
    
    $ python myprogram.py --help
    usage: myprogram.py [-h] [--foo FOO]  #注意程序名
    
    optional arguments:
     -h, --help  show this help message and exit
     --foo FOO   foo help
    $ cd ..
    $ python subdir\myprogram.py --help
    usage: myprogram.py [-h] [--foo FOO] #注意程序名
    
    optional arguments:
     -h, --help  show this help message and exit
     --foo FOO   foo help
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    

    也可以人为指定一个程序名

    >>> parser = argparse.ArgumentParser(prog='myprogram')
    >>> parser.print_help()
    usage: myprogram [-h]        #注意程序名
    
    optional arguments:
     -h, --help  show this help message and exit
    

    相关文章

      网友评论

          本文标题:python命令行解析模块argparse

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