python中的argparse模块

官方文档:https://docs.python.org/3.7/library/argparse.html#the-parse-args-method

argparse模块可以让用户轻松编写命令行界面。 该程序定义了它需要的参数,argparse将指出如何解析sys.argv(一个传递给Python脚本的命令行列表)中的参数。 当用户给程序提供无效参数时,argparse模块还会自动生成帮助和使用消息并发出错误。

1、ArgumentParser类

argparse模块中所定义的最主要的类就是 argparse.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, allow_abbrev=True)
  • 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)

假设Test.py的内容如下:

import argparse
parser = argparse.ArgumentParser(prog='APro',
                                 usage='This  part will tell you how to use the module.',
                                 description='This is a ArgumentParser object.')
parser.parse_args()

其中parser为类ArgumentParser所实例化的对象,先将cmd的执行目录放在Test.py所在的路径下,然后输入python Test.py --help可以得到以下结果:

在该类中拥有两个重要的函数add_argument()和parse_args(),用来增加parser对象中的参数和返回一个有属性值得命名空间。

2、add_argument()的参数含义

首先看看add_argument()的参数以及参数的含义:

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()的参数有两种,一种是位置参数,add_argument('echo', help='this is a positional argment') 位置参数一次只能添加一个,在用命令行运行时必须要赋值。另一种是 可选参数,add_argument(['--f','--foo']) 可选参数前面需要加'--',使用时可以选择是否赋值。

action可以继承argparse.Action定制自己的action,下面是的几个常用的参数:

  • 'store' - 只是保存参数的值。这是默认的动作。
  • 'store_const' - 保存由const关键字参数指出的值。(注意const关键字参数默认是几乎没有帮助的None。)'store_const'动作最常用于指定某种标记的可选参数。
  • 'store_true'和'store_false' - 它们是'store_const' 的特殊情形,分别用于保存值True和False。另外,它们分别会创建默认值False 和True。
  • 'append' - 保存一个列表,并将每个参数值附加在列表的后面。这对于允许指定多次的选项很有帮助。
  • 'append_const' - 保存一个列表,并将const关键字参数指出的值附加在列表的后面。(注意const关键字参数默认是None。)'append_const' 动作在多个参数需要保存常量到相同的列表时特别有用。
  • 'count' - 计算关键字参数出现的次数。

3、parse_args()的用法

parse_args()的参数和含义:

parse_args(args=None, namespace=None)

该函数将参数字符串传递给对象,并将他们指派给相应的命名空间,Python通过该命名空间来识别创建的对象。

  • args - 需要解析的字符串列表,默认来自 sys.argv。
  • namespace  - 一个含有所创建属性的对象,默认为一个新的对象。
args = parser.parse_args()
parser.parse_args(namespace='args')

以上两句代码所表达的含义相同,都是给所创建对象的命名空间命名为args。

4、一个例子

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))

假设以上代码保存在prog.py的文件中,我们用命令行运行:python prog.py -h,可以的到一下结果


usage: prog.py [-h] [--sum] N [N ...]

Process some integers.

positional arguments:
 N           an integer for the accumulator

optional arguments:
 -h, --help  show this help message and exit
 --sum       sum the integers (default: find the max)

添加适当的参数在运行会得到其和或者最大值。


$ python prog.py 1 2 3 4
4

$ python prog.py 1 2 3 4 --sum
10

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值