argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。
官方文档中讲到的,本文基本都提到了,但只是简要记录,如果需要深入理解,可查看原文。
https://docs.python.org/3/library/argparse.HTML
import argparse # 导入模板parser = argparse.ArgumentParser() # 创建parserparser.add_argument() # 添加参数args = parser.parse_args() # 参数解析
ArgumentParser对象class argparse.ArgumentParser( prog=None, # 设定程序名称 (defaul: sys.argv[0]) usage=None, # 替换默认的Usage信息 description=None, # 程序简要信息说明(参数说明前) epilog=None, # 附加信息说明(参数说明后) parents=[], # 继承父解析器(parser) formatter_class=argparse.Helpformatter, # 自定义帮忙信息显示格式(4种) prefix_chars='-', # 参数前缀符号(默认为-,如:-h/--help) fromfile_prefix_chars=None, # 从文件中引用参数(与在命令行直接写作用一致,解决参数过多的情况) argument_default=None, # 可设置argparse.SUPPRESS阻止默认参数默认值 conflict_handler='error', # 参数冲突处理 add_help=True, # 帮助信息中默认添加"-h, --help"描述 allow_abbrev=True # 允许参数缩写)
add_argument()方法ArgumentParser.add_argument( name or flags... # 选项的名称或列表,例如:foo/-f/--foo [, action] # 采取的基本 *** 作 store(默认) 存储参数值 store_const 使用该字符串选项时,取用const值 store_true 使用该字符串选项时,参数值置为True store_false 使用该字符串选项时,参数值置为False append 同一个命令行中多次使用该字符串选项时,以追加的方式将值添加到List中 append_const 将多个字符串选项的const值合并到一个List count 统计选项出现的次数 (如:"-vvv",则最终值为3) help parser默认会添加一个help action。(一般不用理会) version 打印版本信息 也可以自定义action类 [, nargs] # 该参数值要求的数量 数值 指明参数个数 ? 提供了参数则取参数值; 无参数但声明了选项字符串则取const值; 无参数也未声明选择字符串则取default值 * 所有参数存入List + 与*类似,但参数个数不能为空 argparse.REMAINDER 原封不动的记录参数到List中,通常用于将这些参数传递到其它的命令行工具。 [, const] # action/nargs部分要求的常值 1、当action="store_const"或者"append_const"时需要设置 2、当选项为(-f/--foo),nargs='?',同时未提供具体参数时,取用该值。 [, default] # 参数默认值 [, type] # 参数类型(内建参数或者函数,也可是自定义函数) [, choices] # 允许的参数值(白名单),tuple/range [, required] # 选项是否必须,设置为True表示选项必填。 [, help] # 参数说明,可以用其它类似 %(prog)s 格式调用prog值;可设置argparse.SUPPRESS使该选项在帮助信息中不可见。 [, Metavar] # 定义参数在Usage信息中的名称 [, dest] # 解析后的属性名称)
自定义actionclass argparse.Action(option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, Metavar=None)
parse_args()方法#args=None, 程序将sys.argv作为参数代入args = parse.parse_args() #给args赋值,跳过sys.argv,主要用于测试工作,避免每次运行都输入冗长的参数。args = parser.parse_args(['1', '2', '3', '4'])# namespace=custom_class,将属性分配到一个已经存在的对象中。parser.parse_args(args=['--foo', 'bar'], namespace=custom_class99)
例子讲解下面我们通过一个例子来进行讲解说明
我们可以看到上面的第二个步骤,parser = argparse.ArgumentParser()
它的作用就是:当调用parser.print_help()或者运行程序时由于参数不正确(此时python解释器其实也是调用了pring_help()方法)时,会打印这些描述信息,一般只需要传递description参数。
下面会有例子输出,首先给出代码:
#-*- Coding: UTF-8 -*-import argparse #步骤一def parse_args(): """ :return:进行参数的解析 """ description = "you should add those parameter" # 步骤二 parser = argparse.ArgumentParser(description=description) # 这些参数都有默认值,当调用parser.print_help()或者运行程序时由于参数不正确(此时python解释器其实也是调用了pring_help()方法)时, # 会打印这些描述信息,一般只需要传递description参数,如上。 help = "The path of address" parser.add_argument('--addresses',help = help) # 步骤三,后面的help是我的描述 args = parser.parse_args() # 步骤四 return argsif __name__ == '__main__': args = parse_args() print(args.addresses) #直接这么获取即可。
上面四个步骤已经分别对应上了,当我们在命令行敲入:
python arg.py -h
输出提示为:
我们可以直接通过args.addresses获得它的参数值。
当我们敲入python arg.py --addresses this-is-parameter-of-addresses 命令时
会输出this-is-parameter-of-addresses
参考链接:
https://link.zhihu.com/?target=http%3A//blog.xiayf.cn/2013/03/30/argparse/
以上是内存溢出为你收集整理的Python argparse模块详解全部内容,希望文章能够帮你解决Python argparse模块详解所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)