python argparse action_Python学习之Argparse 解析脚本参数详解

本文详细介绍了Python标准库中的Argparse模块,用于解析命令行参数。通过示例展示了如何使用Argparse创建参数解析器,设置参数选项,包括必选参数、可选参数、冲突参数分组以及子命令模式。此外,还提供了一个实际的脚本案例,用于发布和查询功能,演示了如何处理不同操作和环境参数。通过Argparse,开发者可以轻松地构建具有复杂选项的命令行工具。
摘要由CSDN通过智能技术生成

标签:Argparse 是 Python 标准库中推荐的命令行解析模块,经常需要解析脚本参数的话这是个方便的工具模块,摆脱万年手动 system.argv 。本文和大家分享的就是python中Argparse解析脚本参数相关内容,一起来看看吧,希望对大家学习python有所帮助。

引入

import argparse

parser = argparse.ArgumentParser(description=’描述说明,可用于 Help 输出说明’, add_help=True)

parser.parse_args()

ArgumentParser 可选参数如下:

· prog – 此脚本程序名称 (默认: sys.argv[0])

· usage – 用法说明 (默认: 根据参数自动生成)

· description – 脚本说明

· epilog – 也是说明,在 help 输出最后

· parents – 父 Parsers

· formatter_class – 输出帮助信息的定制类

· prefix_chars – 可选前缀参数字符(设置后参数名称需以此为前缀)

· fromfile_prefix_chars – 从文件读取可选前缀参数字符

· argument_default – 所有参数的默认值

· conflict_handler – 冲突处理器

· add_help – 是否添加帮助

常用方法

add_argument()

// test.py

import argparse

parser = argparse.ArgumentParser()

parser.add_argument(’-p’, ’--param’)args = parser.parse_args()print args.param

运行 python test.py -p value or python test.py --param value 即可。

add_argument 可选方法参数如下:

· name or flags - 参数的名字.

· action - 遇到参数时的动作,默认值是 store。store_const,表示赋值为 const;append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值; append_const,将参数规范中定义的一个值保存到一个列表;count,存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;

· nargs - 参数的个数,可以是具体的数字,或者是 ? 号,当不指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数.

· const - action 和 nargs 所需要的常量值.

· default - 不指定参数时的默认值.

· type - 参数的类型. 如 int、str

· choices - 参数允许的值. 如:[‘a’, ‘b’, ‘c’]

· required - 可选参数是否可以省略(仅针对 optionals ).

· help - 参数的帮助信息,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息.

· metavar - 在usage说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.

· dest - 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.

add_mutually_exclusive_group()

设置冲突参数,当需要设置指定输入参数只能包含其中一个时即可用此方法。

// test.py

parse = argparse.ArgumentParser()group = parse.add_mutually_exclusive_group()group.add_argument("-a", action="store_true")group.add_argument("-b", action="store_true")

args = parse.parse_args()

此种情形下 test.py 输入参数只能包含 a 或 b, a、b 不能同时存在。

add_argument_group()

参数分组设置。当有分组命令的需求时可用,输入参数将归于所属分组下。

parse = argparse.ArgumentParser()

some_group = parse.add_argument_group(’Publish plugin’)

some_group.add_argument(’-f’  type=str)

add_subparsers()

子命令模式,类似 git commit 、 git push 等命令.

parse = argparse.ArgumentParser()sub_parse = parse.add_subparsers()# sub_parse opt...

Sample

下面由一个使用场景说起。一个脚本: publish.py ,包含两个功能:发布和查询,运行环境有测试服和正式服,发布时需要两个账号系统的密码,查询时需要一个账号系统的密码和版本、渠道参数。那么脚本如下,其它见注释:

// publish.py

import argparse

def get_args():

parse = argparse.ArgumentParser(description=’Publish tools.’, add_help=True)

# 操作输入,使用互斥参数并且参数必须输入且只能选一个

group = parse.add_mutually_exclusive_group(required=True)

# 查询操作

group.add_argument("-s", "--Search", action="store_true")

# 发布操作

group.add_argument("-p", "--Publish", action="store_true")

# 运行环境参数

parse.add_argument(’-e’, ’--Env’, type=str, help=’Running environment’, choices=[’test’, ’product’], default=’test’)

# 账号必选信息

parse.add_argument(’-a’, ’--ApiAuth’, required=True, type=str, help=’username:password’)

# 发布分组命令设置

publish_group = parse.add_argument_group(’Publish’)

publish_group.add_argument(’-f’, ’--FtpAuth’,  type=str, help=’username:password’)

# 查询分组命令设置

search_group = parse.add_argument_group(’Search’)

search_group.add_argument(’-c’, ’--channel’, type=str, help=’channel’)

search_group.add_argument(’-v’, ’--versonCode’, type=int, help=’Search verson code’)

args = parse.parse_args()

return vars(args)

args=get_args()print ’opt search?:’, args[’Search’],’ opt publish?:’, args[’Publish’], ’\n’, args

publish.py -h 使用帮助如下:

usage: test.py [-h] (-s | -p) [-e {test,product}] -a APIAUTH [-f FTPAUTH]

[-c CHANNEL] [-v HOSTVERSONCODE]

Publish tools.

optional arguments:

-h, --help            show this help message and exit

-s, --Search

-p, --Publish

-e {test,product}, --Env {test,product}

Running environment

-a APIAUTH, --ApiAuth APIAUTH

username:password

Publish plugin:

-f FTPAUTH, --FtpAuth FTPAUTH

username:password

Search plugin:

-c CHANNEL, --channel CHANNEL

channel

-v VERSONCODE, --VersonCode VERSONCODE

Search verson code

使用如下:

# 1 publish

python publish.py -p -a U

 -f U

# 2 search

python publish.py -s -a U

 -c channel -v 100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值