python3中argparse模块

原文链接:https://www.cnblogs.com/dengtou/p/8413609.html

python3中的argparse模块
argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。

一、定义:argparse是python标准库里面用来处理命令行参数的库
二、命令行参数分为位置参数和选项参数:
位置参数就是程序根据该参数出现的位置来确定的

        如:[root@openstack_1 /]# ls root/    #其中root/是位置参数

不需要指定–parse形式。

直接:parser.add_argument(“参数名”)

    选项参数是应用程序已经提前定义好的参数,不是随意指定的

        如:[root@openstack_1 /]# ls -l    # -l 就是ls命令里的一个选项参数。

可以通过-和–来指定短参和长参。

三、使用步骤:
(1)import argparse 首先导入模块

(2)parser = argparse.ArgumentParser() 创建一个解析对象

(3)parser.add_argument() 向该对象中添加你要关注的命令行参数和选项

(4)parser.parse_args() 进行解析

四、argparse.ArgumentParser()方法参数须知:一般我们只选择用description
1.prog=None - 程序名,默认为sys.argv[0]。另外,如果你需要在help中使用到程序的名字,可以使用%(prog)s

2.description=None, - help时显示的开始文字

3.epilog=None, - help时显示的结尾文字

4.parents=[], -若与其他参数的一些内容一样,可以继承

5.formatter_class=argparse.HelpFormatter, - 自定义帮助信息的格式

6.prefix_chars=’-’, - 命令的前缀,默认是‘-’

7.fromfile_prefix_chars=None, - 命令行参数从文件中读取

8.argument_default=None, - 设置一个全局的选项缺省值,一般每个选项单独设置

       9.conflict_handler='error',     - 定义两个add_argument中添加的选项名字发生冲突时怎么处理,默认处理是抛出异常

       10.add_help=True    - 是否增加-h/--help选项,默认是True)

11.usage:描述程序用途的字符串

默认为:

argparse.ArgumentParser(prog=None,
usage=None,
epilog=None,
parents=[],
formatter_class=argparse.HelpFormatter,
prefix_chars=’-’,
fromfile_prefix_chars=None,
argument_default=None,
conflict_handler=‘error’,
add_help=True)
五、add_argument()方法参数须知:
不带’–'的参数

调用脚本时必须输入值

参数输入的顺序与程序中定义的顺序一致

带’-'的参数

可不输入    add_argument("-a")

类似有'--'的shortname,但程序中的变量名为定义的参数名

带’–'参数

参数别名: 只能是1个字符,区分大小写

可选参数是以’-‘为前缀的参数,剩下的就是位置参数

1.name or flags… - 必选,指定参数的形式,一般写两个,一个短参数,一个长参数

import argparse
parser = argparse.ArgumentParser()
parser.add_argument(‘echo’) # add_argument()指定程序可以接受的命令行选项
args = parser.parse_args() # parse_args()从指定的选项中返回一些数据
print(args)
print(args.echo)

结果:
G:\flower\python\arg_parse>python demo1.py foo
Namespace(echo=‘foo’)
foo

接下来都是可选参数,包括:

[, action][, help][, required][, type][, choices][, nargs][, dest][, default]

[, metavar][, const]

2.action 表示值赋予键的方式,这里用到的是bool类型,action意思是当读取的参数中出现指定参数的时候的行为

action:

    store:默认action模式,存储值到指定变量。

    store_const:存储值在参数的const部分指定,多用于实现非布尔的命令行flag。

    store_true / store_false:布尔开关。可以2个参数对应一个变量。

    append:存储值到列表,该参数可以重复使用。

    append_const:存储值到列表,存储值在参数的const部分指定。

    count: 统计参数简写输入的个数  add_argument("-c", "--gc", action="count")

    version 输出版本信息然后退出。

3.help 可以写帮助信息

parser = argparse.ArgumentParser(description = ‘this is a description’)
parser.add_argument(’–ver’, ‘-v’, action = ‘store_true’, help = ‘hahaha’)

将变量以标签-值的字典形式存入args字典

args = parser.parse_args()
if args.ver:
print(“Ture”)
else:
print(“False”)

结果:
G:\flower\python\arg_parse>python demo1.py -v
Ture

G:\flower\python\arg_parse>python demo1.py -j
usage: demo1.py [-h] [–ver]
demo1.py: error: unrecognized arguments: -j

4.required - 必需参数,通常-f这样的选项是可选的,但是如果required=True那么就是必须的了

5.type - 指定参数类型,str,int,float等,默认为str

required标签就是说–ver参数是必需的,并且类型为int,输入其它类型会报错

parser.add_argument(’–ver’, ‘-v’, required = True, type = int)

结果:
G:\flower\python\arg_parse>python demo1.py -v 1
Ture

G:\flower\python\arg_parse>python demo1.py -v ss
usage: demo1.py [-h] --ver VER
demo1.py: error: argument --ver/-v: invalid int value: ‘ss’

6.choices - 设置参数的范围,如果choice中的类型不是字符串,要指定type

表示该参数能接受的值只能来自某几个值候选值中,除此之外会报错,用choice参数即可

parser.add_argument(‘file’, choices = [‘test1’, ‘test2’])
args = parser.parse_args()
print(‘read in %s’%(args.file))

结果:
G:\flower\python\arg_parse>python demo1.py test1
read in test1

7.nargs - 命令行参数的个数,指定这个参数后面的value有多少个,默认为1。

表示脚本可以读入两个整数赋予num键(此时的值为2个整数的数组)

parser.add_argument(‘filename’, nargs = 2, type = int)
args = parser.parse_args()
print(‘read in %s’%(args.filename))

结果:
G:\flower\python\arg_parse>python demo1.py 1 2 3
usage: demo1.py [-h] filename filename
demo1.py: error: unrecognized arguments: 3

分析:nargs还可以

'*'用来表示如果有该位置参数输入的话,之后所有的输入都将作为该位置参数的值。 0或多个

‘+’表示读取至少1个该位置参数。 至少一个

'?'表示该位置参数要么没有,要么就只要一个。 0或一个

(PS:跟正则表达式的符号用途一致。)

如:

parser.add_argument(‘filename’, nargs = ‘+’, type = int)
args = parser.parse_args()
print(‘read in %s’%(args.filename))

8.dest - 设置这个选项的value解析出来后放到哪个属性中,即参数在程序中使用时对应的变量名

parser.add_argument(’-file’, choices = [‘test1’, ‘test2’], dest = ‘world’)
args = parser.parse_args()
print(‘read in %s’%(args.world))

结果:
G:\flower\python\arg_parse>python demo1.py -file test1
read in test1
9.default -设置参数默认值,当参数需要默认值时,由这个参数指定,默认为None,当default=argparse.SUPPRESS时,不使用任何值

10.metavar -参数的名字,在显示帮助信息时才用到.在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.

11.const -配合action="store_const|append_const"使用,默认值

102 verbose 和 quiet是互斥参数,可以定义多个互斥组

创建子parse,每个子parse对应自己的输入参数:

parser = argparse.ArgumentParser()

subparsers = parser.add_subparsers(help=‘commands’)

要注意的一点是:创建父解析器时要指定 add_help=False,否则会报错(ArgumentParser对象会找到两个-h/–help选项)。

最后,一旦你已经定义好了所有的命令行参数,调用 parse_args() 来解析程序的命令行:

(options, args) = parser.parse_args()

注: 你也可以传递一个命令行参数列表到 parse_args();否则,默认使用 sys.argv[:1]。

parse_args() 返回的两个值:

options,它是一个对象(optpars.Values),保存有命令行参数值。只要知道命令行参数名,如 file,就可以访问其对应的值: options.file 。

args,它是一个由 positional arguments 组成的列表。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值