python argparse模块详解多级_python argparse详解

1.argparse模块作用

用于解析命令行参数

2.位置参数和可选参数

运行以下代码:

import argparse

parser = argparse.ArgumentParser()

args = parser.parse_args()

运行结果:

参数为-h或--help时,parser.parse_args()会输出命令行的位置参数position arguments和可选参数optional arguments

位置参数:按照参数的顺序解析,参数必填

可选参数:以-或--开头,参数非必填

位置参数,可选参数示例如下:

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("num", type=int, help="position")

parser.add_argument("--mode", "-m", type=int, help="optional")

args = parser.parse_args()

运行结果:

num为一个位置参数,type表示参数的类型,参数默认都是string类型的,help表示参数的描述

--mode,以--开头,为一个可选参数,可以有多个别名(--mode,-m)

可选参数,不是必填的,一般用来作条件分支,如下所示:

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("num", type=int, help="position")

parser.add_argument("--mode", "-m", type=int, help="optional")

args = parser.parse_args()

result = 0

if args.mode == 1:

result = args.num ** 2

else:

result = args.num * 2

print(result)

运行结果:

当mode=1时,计算num的平方,否则,计算num*2

指定参数的范围,choice

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("num", type=int, choices=[5, 6, 7], help="position")

parser.add_argument("--mode", "-m", action="store_true", help="optional")

args = parser.parse_args()

result = 0

if args.mode:

result = args.num ** 2

else:

result = args.num * 2

print(result)

运行结果:

3.可选参数

位置参数没有太多要讲的,必填,类型必须和定义的一致(默认为string),否则会报错。

可选参数有以下几种action

1)store_true

有参数时为true,没有为false,有参数时不能指定参数的值

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("num", type=int, help="position")

parser.add_argument("--mode", "-m", action="store_true", help="optional")

args = parser.parse_args()

result = 0

if args.mode:

result = args.num ** 2

else:

result = args.num * 2

print(result)

运行结果:

2)count

数值,-m表示1,-mm或-m -m表示2,以此类推

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("num", type=int, choices=[5, 6, 7], help="position")

parser.add_argument("--mode", "-m", action="count", help="optional")

args = parser.parse_args()

result = 0

if args.mode == 1:

result = args.num ** 2

elif args.mode == 2:

result = args.num * 2

else:

result = args.num

print(result)

不加参数,表示None,可以设置默认count,则-m表示默认值+1

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("num", type=int, help="position")

parser.add_argument("--mode", "-m", action="count", default=1, help="optional")

args = parser.parse_args()

result = 0

if args.mode == 1:

result = args.num ** 2

elif args.mode == 2:

result = args.num * 2

else:

result = args.num

print(result)

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值