python argparse

argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。 argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
使用argparse从命令行传入参数的三个步骤:
1,第一步创建一个ArgumentParser对象:
        parser = argparse.ArgumentParser(description='process some integers')
2,第二步调用add_argument()方法添加参数
        parser.add_argument('-f',       'binfile',        default='',      help='input bin file')
3,第三步调用parse_args()方法解析参数,然后就可以利用args.binfile对参数进行调用
        args = parser.parse_args()

一,ArgumentParser()括号中可以添加的参数

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 - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值: None)
argument_default - 参数的全局默认值(默认值: None)
conflict_handler - 解决冲突选项的策略(通常是不必要的)
add_help - 为解析器添加一个 -h/--help 选项(默认值: True)
allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:True)
在 3.5 版更改: 增加了 allow_abbrev 参数。
  • description参数和epilog参数,见下图所示,description显示在前面,epilog显示在最后


  •  prefix_chars参数,一般命令行中会默认使用 - 号作为前缀,比如-f,-l等。如果想其他的字符作为前缀就可以使用这参数来定义。注意不仅要将-f修改成+f,还要将--binfile改成++binfile。

  二,add_argument

经常性的用法如下:

import argparse
demo_doc="change bin file to hex"
parser = argparse.ArgumentParser(formatter_class.RawTextHelpFormatter,epilog=demo_doc)
parser.add_argument('-f'   ,'--binfile'    ,default=''    ,help='input bin file')
parser.add_argument('-d'   ,'--start_addr' ,default=''    ,help='input bin file')
args = parser.parse_args

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 - 被一些 action 和 nargs 选择所需求的常数。
default - 当参数未在命令行中出现时使用的值。
type - 命令行参数应当被转换成的类型。
choices - 可用的参数的容器。
required - 此命令行选项是否可省略 (仅选项可用)。
help - 一个此选项作用的简单描述。
metavar - 在使用方法消息中使用的参数值示例。
dest - 被添加到 parse_args() 所返回对象上的属性名。

add_argument选项参数通过 - 前缀识别,不加-则会被识别为位置参数:
选项参数的创建:parser.add_argument('-f', '--foo')
位置参数的创建:parser.add_argument('bar')

  • action参数:

‘store’ 存储参数的值,这是action的默认值。
‘store_const’ 存储被const命名参数指定的值。

 ‘store_true'和'store_false',是’store_const‘分别用作存储True和False值得特殊用例,默认值分别为True和False。

’append' 存储一个列表,并且将每个参数值追加到列表中。 

 ‘version’ 添加一个版本信息的参数

更多参数信息请查看 16.4. argparse — 命令行选项、参数和子命令解析器 — Python 3.5.10 文档

  • nargs参数,将多个参数作为列表存储起来

N 一个整数,命令行中的N个参数将会存到一个列表中,N为1时,存的是只有一个数据的列表

 '?' 如果有参数的话就存入一个数(不是列表),没有参数就存入default值,如果命令行中输入标志项,但是后面没有跟参数的话就存入const后面跟的数

‘*’ 命令行中所有输入的参数存成一个列表。

 ‘+’,和‘*’类似,所有当前命令行参数被聚集到一个列表中,如果一个参数都没有的话会报错。
argparse.REMAINDER,所有剩余的命令行参数被聚集到一个列表中。

  •  const 该参数用于保存不从命令行中读取但是会被需要的常数值(可以为string类型的字符串)。最常用的两例如下:

  •  default  指定了在命令行参数未出现时应该使用的默认值,默认值为None,使用type参数可以对default数据类型进行转换。
  •  type 默认情况下,ArgumentParser对象将命令行的参数当作简单字符串读入,可以使用type对输入的参数类型进行转换,比如float,int。还可以在type参数后面调用函数来对参数进行转换,并返回转换后的值。

  •  choice 检查输入的参数是否在一个范围内。,如果参数值不是可接受的值之一就会显示错误消息 

  •  require 通常需要输入的参数都是可选的,在命令行中是可以被忽略的(也就是可以不输入该参数),要让一个选项成为必需的,则可以将True作为required=关键字传给add_argument()
  • help 是描述参数的字符串,当在命令行使用-h或者--help的时候,这些help描述将随每个参数一同显示。
  • metavar 屏幕上显示帮助消息时,参数后面显示的名称可以用该参数来改写
  • dest 可以使用dest参数来定义输入参数的名字,对于可选参数,dest的值通常取自选项字符串。ArgumentParser会通过第一个长选项字符串并去掉开头的--字符串来生成dest的值。如果没有提供长选项字符串,则dest将通过接受第一个短选项字符串并去掉开头的-字符来获得。任何内部的-字符都会被转换成_字符以确保字符串是有效的属性名称。

该文章是自己使用的相关总结,参数解释部分大篇幅引用了如下文章,支持原版请移步如下链接。 16.4. argparse — 命令行选项、参数和子命令解析器 — Python 3.5.10 文档https://docs.python.org/zh-cn/3.5/library/argparse.html#argparse.Action

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值