argparse 命令参数模块简介

简介

argparse模块在pyhon3.2中添加到标准库中

 

argparse模块可以让我们更方便的开发命令行参数输入。该模块定义了需要什么参数,并且自动从sys.argv中解析参数; 该模块还会自动生成help, usage信息,当用户输入出错时,自动提示。

 

其他类似模块:

python还有两个类似的模块getopt(类似于C的getopt),和optparse(不推荐使用), argparse是基于optparse的。

如果用户熟悉C的getopt可以用getopt。 如果不熟悉则建议使用argparse,使用argparse可以减少代码量,并且得到更好的帮助和错误信息。

 

 

命令行参数需要什么功能?

必选参数

可选的,指定参数,一般指定参数会有长参数和短参数

可选参数需要有值

参数类型

help或者是usage帮助信息

输入有误时的提示

 

使用介绍

使用基础

import argparse
parser = argparse.ArgumentParser()  #创建一个parser对象
parser.parse_args()   #将参数字符串转换为对象,并将它们指定为名称空间的属性。返回已填充的名称空间。

运行这段代码可以得到:

$ python3 prog.py
$ python3 prog.py --help
usage: prog.py [-h]

optional arguments:
  -h, --help  show this help message and exit
$ python3 prog.py --verbose
usage: prog.py [-h]
prog.py: error: unrecognized arguments: --verbose
$ python3 prog.py foo
usage: prog.py [-h]
prog.py: error: unrecognized arguments: foo

 

占位参数

必须传的参数,不传则报错

基本help是帮助信息

parser.add_argument("echo")  #添加占位参数
parser.add_argument("square", help="display a square of a given number")

参数类型

默认情况下,argparse把所有参数默认为strings类型,如果是其他类型,需要指定。

parser.add_argument("square", help="display a square of a given number", type=int)

 

可选参数

这种情况下,可选参数是需要传入值的。

parser.add_argument("--verbosity", help="increase output verbosity")

 

不需要传入值的可选参数

使用action="store_true", 它的帮助文本和普通的可选参数也不同。

它的默认为false, 当指定时,为true

parser.add_argument("--verbose", help="increase output verbosity", action="store_true")

 

组合占位参数和可选参数

占位参数和可选参数,无论是在定义,还是在使用时的位置都不是固定的。任意位置传入参数皆可,但需要注意,需要传入的参数,一定要传入。

 

指定参数可选范围

choices: 指定数值选择范围, 参数的值只能从这几个里面选,如果不在其中,将会报错

parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")

 

以重复指定次数来达到不同的效果

指定一次值为1 eg: -v

指定两次值为2 eg: -vv

以下是通过action的"count"这个值来实现的。这样就让可指定可选范围的参数更加像是一个flag,

如果不指定,则默认值为None。

parser.add_argument("-v", "--verbosity", action="count", help="increase output verbosity")

 

为参数指定默认值

使用default选项来为对象指定默认参数

parser.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")

 

添加互斥的可选参数

使用方法add_mutually_exclusive_group()生成的对象添加的参数,是互斥的。

parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true")

使用出错提示:
prog.py: error: argument -q/--quiet: not allowed with argument -v/--verbose

 

添加命令行的整体说明

在生成对象时,传入description参数,将会显示在help中。

parser = argparse.ArgumentParser(description="calculate X to the power of Y")

#使用help后,得到说明
usage: prog.py [-h] [-v {0,1,2}] [--verbose] [-g] [-t | -p] url data

calculate X to the power of Y

 

添加可以多次指定的参数

想要通过 --foo aa --foo bbb 来获取 foo=["aa", "bbb"],需要使用action的append值。

# 想要多次指定参数 
parser.add_argument("--foo", action="append", type=str)

 

action其实还store_const, store_true, store_false, append, append_const, count等值,到时候有其他需求再去查。

还有另一个可以控制多个参数的,是nargs参数。需要用时请自行查阅。

 

 

整体示例

import argparse

# 使用description进行命令行的整体说明
parser = argparse.ArgumentParser(description="calculate X to the power of Y")

# 必选参数
parser.add_argument("url", help="url is used to get the page source")
# 指定了参数类型的必选参数
parser.add_argument("data", help="url is used to get the page source", type=int)
# 可选参数,且指定了参数可选择的范围
parser.add_argument("-v", "--verbosity", help="increase output verbosity", choices=[0, 1, 2])
# 可以不写传入参数的要选参数, 默认为false,指定为true
parser.add_argument("--verbose", help="increase output verbosity",
                    action="store_true")
# -g -gg, 可使用多个的参数类型。
parser.add_argument("-g", "--gcount", action="count",
                    help="you can use -g, -gg ,-ggg", default=0)

# 互斥参数 以下指定 -t -p 为互斥参数,不要同时出现。常见选项有-q, -v
group = parser.add_mutually_exclusive_group()
group.add_argument("-t", "--verbose2", action="store_true")
group.add_argument("-p", "--quiet", action="store_true")

args = parser.parse_args()
print("urls", args.url)
print("data * 2", args.data * 2)
print("verbosity", args.verbosity)
print("verbose", args.verbose)
print("gcount", args.gcount)

 

参考:

官方文档:

https://docs.python.org/3/library/argparse.html

https://docs.python.org/3/howto/argparse.html#id1 来自这一篇

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值