用途
python用于解析命令行参数和选项的标准模块,内置于python,不需要安装.
使用步骤
引入模块
import argparse
创建一个解析器
使用 argparse 的第一步是创建一个 ArgumentParser 对象:
parser = argparse.ArgumentParser(description='Process some integers.')
ArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。
添加参数
给一个 ArgumentParser 添加程序参数信息是通过调用 add_argument() 方法完成的。通常,这些调用指定 ArgumentParser 如何获取命令行字符串并将其转换为对象。这些信息在 parse_args() 调用时被存储和使用。
parser.add_argument( ' ***' )
解析参数
ArgumentParser 通过 parse_args() 方法解析参数。它将检查命令行,把每个参数转换为适当的类型然后调用相应的操作。在大多数情况下,这意味着一个简单的 Namespace 对象将从命令行解析出的属性构建:
args = parser.parse_args()
将属性赋值给args实例,即把parser中设置的所有’add_argument’给返回到args子类实例中。
最后得到的结果是一种类似于python字典的数据类型。我们可以使用 args.参数名来提取对应的参数
argparse.ArgumentParser()
参数解析:一般只选择用description
1.description - 命令行帮助的开始文字,大部分情况下,我们只会用到这个参数
2.epilog - 命令行帮助的结尾文字
3.prog - (default: sys.argv[0])程序的名字,一般不需要修改
4.prefix_chars - 命令的前缀,默认是-,例如-f/–file。
5.fromfile_prefix_chars - (default: None)如果你希望命令行参数可以从文件中读取,就可能用到。例如,如果fromfile_prefix_chars=’@’,命令行参数中有一个为”@args.txt”,args.txt的内容会作为命令行参数
6.add_help - 是否增加-h/-help选项 (default: True),一般help信息都是必须的,所以不用设置啦。
7.parents - 类型是list,如果这个parser的一些选项跟其他某些parser的选项一样,可以用parents来实现继承,例如parents=[parent_parser]
8.argument_default - (default: None)设置一个全局的选项的缺省值,使用较少
9.usage - (default: generated)如果你需要修改usage的信息(usage: PROG [-h] [–foo [FOO]] bar [bar …]),那么可以修改这个,一般不要修改。
10.conflict_handler - 不建议使用。这个在极端情况下才会用到,主要是定义两个add_argument中添加的选项的名字发生冲突时怎么处理,默认处理是抛出异常。
add_argument()
命令行参数:
ArgumentParser.add_argument(name or flags...[,action][,nargs][,const][,default]
[,type][,choices][,required][,help][,metavar][,dest])
参数解析:
选项字符串名字或列表 — name or flags
必须有的参数,主要分为以下几种类型:
1.位置参数:不带“-”或“- -”的参数,调用时必须输入,且次序与定义时相同
2.可选参数:带“-”或“- -”的参数,没有定义时,默认为None.其中‘-’表示参数的缩写,便于命令行的输入。
命令行遇到参数时的动作 — action
指定应该如何处理命令行参数,预置的操作有以下几种:
1.action=’store’ 仅仅保存参数值,为action默认值
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> parser.parse_args('--foo 1'.split())
Namespace(foo='1')
2.action=’store_const’ 与store基本一致,但store_const只保存const关键字指定的值
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', action='store_const', const=42)
>>> parser.parse_args('--foo'.split())
Namespace(foo=42)
>>> parser.parse_args('--foo 34'.split())
usage: arg_parse.py [-h