python学习之argparse模块

argparse模块可以编写用户友好的命令行界面。

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 - 在参数帮助之前显示的文本(默认值:无)
epilog - 参数帮助后显示的文本(默认值:无)
parents - 也应包含其参数的ArgumentParser对象的列表
formatter_class - 用于自定义帮助输出的类
prefix_chars - 可选参数前缀的字符集(默认值:' - ')
fromfile_prefix_chars - 要从中读取附加参数的文件前缀的字符集(默认值:无)
argument_default - 参数的全局默认值(默认值:无)
conflict_handler - 解决冲突的可选项的策略(通常是不必要的)
add_help - 将-h / - help选项添加到解析器(默认值:True)
allow_abbrev - 如果缩写是明确的,则允许缩短长选项。 (默认值:True)

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

下面分别进行详细介绍:

prog

默认情况下,ArgumentParser对象使用sys.argv[0]来确定如何在帮助消息中显示程序的名称。

例如,使用以下代码来考虑一个名为myprogram.py的文件:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', help='foo help')
args = parser.parse_args()

 该程序的帮助将显示myprogram.py作为程序名称(无论从哪里调用程序):

$ 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

 要更改此默认行为,可以使用argumentParser的prog=param提供另一个值:

>>> parser = argparse.ArgumentParser(prog='myprogram')
>>> parser.print_help()
usage: myprogram [-h]

optional arguments:
 -h, --help  show this help message and exit

 请注意,无论从sys.argv[0]还是从prog=param确定,程序名称可用于帮助使用%(prog)格式说明符的消息。

>>> parser = argparse.ArgumentParser(prog='myprogram')
>>> parser.add_argument('--foo', help='foo of the %(prog)s program')
>>> parser.print_help()
usage: myprogram [-h] [--foo FOO]

optional arguments:
 -h, --help  show this help message and exit
 --foo FOO   foo of the myprogram program

usage

默认情况下,ArgumentParser从其包含的参数中计算使用消息。

可以使用usage = keyword参数覆盖默认消息。

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()返回的对象的属性的名称。
ArgumentParser.parse_args(args = None,namespace = None)

     将参数字符串转换为对象,并将它们分配为命名空间的属性。返回填充的命名空间。

     以前调用add_argument()确切地确定了创建的对象以及它们的分配方式。
     有关详细信息,请参阅add_argument()的文档。

     默认情况下,参数字符串取自sys.argv,并为属性创建一个新的空名称空间对象。

原文地址:https://www.cnblogs.com/leomei91/p/7687203.html