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,并为属性创建一个新的空名称空间对象。
及时行乐