argparse命令行解析模块

argparse命令行解析模块

导入包

import argparse

基本用法

import argparse  # 导入包
parser = argparse.ArgumentParser() # 构造解析器对象
parser.add_argument("echo") # 添加属性
args = parser.parse_args() # 解析参数
print(args.echo) # 获取输入的参数

ArgumentParser对象

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

PROG -程序的名称(默认:sys.argv[0])
usage - 描述程序用法的字符串(默认值:从添加到解析器的参数生成)
description - 参数help之前显示的文本(默认值:none)
epilog - 参数help后显示的文本(默认值:none)
parents - ArgumentParser还应包含其参数的对象列表(相当于继承其他解析器的参数,不能覆盖重新,父解析器指定add_help=False,防止help参数冲突)
formatter_class - 用于自定义帮助输出的类:

  • argparse.RawDescriptionHelpFormatter:表示描述和收尾已经正确格式化
  • argparse.RawTextHelpFormatter
  • argparse.ArgumentDefaultsHelpFormatter
  • argparse.MetavarTypeHelpFormatter

prefix_chars - 前缀可选参数的字符集(默认值:’ - ‘),例如:prefix_chars=’-+’
fromfile_prefix_chars -特定符号(默认值:None),参数中此特定符号加文件名表示读取该文件的内容,作为参数.文件的每行代表一个参数,顺序表示在命令行中的顺序
argument_default -为参数的全局默认值(默认值:None)
conflict_handler - 解决冲突选项的策略(通常是不必要的),conflict_handler=’resolve’
add_help -添加-h/–help选项解析器(默认值:True)
allow_abbrev - 如果缩写是明确的,则允许缩写长选项。(默认值:True)

add_argument()方法

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

name or flags - 选项字符串的名称或列表,例如foo(位置参数) 或-f, –foo(可选参数)
action - 在命令行遇到此参数时要采取的基本操作类型:

  • ‘store’ - 这只是存储参数的值。这是默认操作
  • ‘store_const’- 它存储const关键字参数指定的值,常用于指定某种标志的可选参数
  • ‘store_true’和’store_false’-默认参数的值分别False和True
  • ‘append’ - 它存储一个列表,并将每个参数值附加到列表中
  • ‘append_const’- 它存储一个列表,并将const关键字参数指定的值附加到列表中
  • ‘count’ - 这计算关键字参数出现的次数
  • ‘help’ - 这将打印当前解析器中所有选项的完整帮助消息,然后退出
  • ‘version’- 这需要调用中version=关键字参数,并打印版本信息并在调用时退出

nargs - 应该使用的命令行参数的数量:

  • N(整数)将命令行中的N个参数一起收集到一个列表中
  • ‘?’。如果可能,将从命令行使用一个参数,并将其作为单个项生成。如果不存在命令行参数,则将生成默认值default 。对于可选参数,还有一种情况 - 选项字符串存在但后面没有命令行参数。在这种情况下,将生成const的值。
  • ‘*’。存在的所有命令行参数都收集到列表中
  • ‘+’。就像’*’,所有存在的命令行参数都被收集到一个列表中。此外,如果不存在至少一个命令行参数,将生成错误消息。
  • argparse.REMAINDER。所有剩余的命令行参数都收集到一个列表中

const - 某些操作和nargs选择所需的常量值。
default - 如果命令行中不存在参数,则生成的值。
type - 应转换命令行参数的类型:

  • open对文件
  • argparse.FileType可以对文件提供更详细的控制,argparse.FileType(‘w’)创建可写文件

choices - 参数允许值的容器。
required - 是否可以省略命令行选项(仅限可选参数)。
help - 对参数的作用的简要描述。
metavar - 用法消息中参数的显示名称。
dest - 要添加到返回的对象的属性的名称
class argparse.Action(option_strings,dest,nargs = None,const = None,default = None,type = None,choices = None,required = False,help = None,metavar = None )

parse_args()方法

ArgumentParser.parse_args(args = None,namespace = None ):将参数字符串转换为对象并将其指定为命名空间的属性。返回填充的命名空间

其他工具

ArgumentParser.add_subparsers([ title ] [,description ] [,prog ] [,parser_class ] [,action ] [,option_string ] [,dest ] [,required ] [,help ] [,metavar ] ):创建子命令

title - 帮助输出中的子解析器组的标题; 默认情况下为“subcommands”(如果提供了description),否则使用title作为位置参数
description - 默认情况下,帮助输出中的子解析器组的描述 None
prog - 将使用子命令帮助显示的使用信息,默认情况下,程序的名称和subparser参数之前的任何位置参数
parser_class - 将用于创建子解析器实例的类,默认情况下是当前解析器的类(例如ArgumentParser)
action - 在命令行遇到此参数时要采取的基本操作类型
dest - 将存储子命令名称的属性的名称; 默认情况下None,不存储任何值
required - 默认情况下是否必须提供子命令 False。
help - 默认情况下,帮助输出中的子解析器组的帮助None
metavar - 在帮助中显示可用子命令的字符串; 默认情况下它是,None并以{cmd1,cmd2,..}形式显示子命令

class argparse.FileType(mode ='r',bufsize = -1,encoding = None,errors = None ):创建一个可以传递给类型参数的对象ArgumentParser.add_argument()。具有 FileType对象作为其类型的参数将打开命令行参数作为具有所请求的模式,缓冲区大小,编码和错误处理的文件

ArgumentParser.add_argument_group(title = None,description = None ):返回一个参数组对象,该对象和ArgumentParser对象类似,选项分组

>>> parser = argparse.ArgumentParser(prog='PROG', add_help=False)
>>> group = parser.add_argument_group('group')
>>> group.add_argument('--foo', help='foo help')

ArgumentParser.add_mutually_exclusive_group(required=False):创建一个互斥的组,该对象和ArgumentParser对象类似

>>> group = parser.add_mutually_exclusive_group()
>>> group.add_argument('--foo', action='store_true')
>>> group.add_argument('--bar', action='store_false')

ArgumentParser.set_defaults(** kwargs ):添加属性及值

>>> parser.add_argument('foo', type=int)
>>> parser.set_defaults(bar=42, baz='badger')

ArgumentParser.get_default(dest ):获取命名空间属性的默认值

>>> parser.add_argument('--foo', default='badger')
>>> parser.get_default('foo')

官方文档

[官方教程翻译]https://blog.ixxoo.me/argparse.html
[官方文档]https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.add_argument

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WY_记录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值