6 通过argparse模块接收命令行参数(设置必填参数、可选参数、设置参数类型、设置选择性参数、默认参数、count参数、互斥参数)

 欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力

对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:3329759426@qq.com 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

    专栏:

文章概述:对通过argparse模块接收命令行参数(设置必填参数、可选参数、设置参数类型、设置选择性参数、默认参数、count参数、互斥参数)的介绍

关键词:argparse模块接收命令行参数   设置必填参数、可选参数、设置参数类型、设置选择性参数、默认参数、count参数、互斥参数  

本文目录

引言:

设置必填参数

还可以设置参数类型

Python中添加可选参数

引言:

前面一篇博客 通过sys模块接收命令行参数 中我讲到了用sys模块的sys.argv[]来获取参数

这篇博文我将详细讲解通过argparse模块接收命令行参数(设置必填参数、可选参数)

设置必填参数

from argparse import ArgumentParser

parser = ArgumentParser()
#添加一个命令行参数
parser.add_argument('echo', help='the given string')
# 解析命令行参数  
args = parser.parse_args()
# 使用提供的参数  
print(args.echo)

不填就报错

from argparse import ArgumentParser

ArgumentParser是 argparse下的一个类

parser.add_argument('echo', help='the given string') 使用了 ArgumentParser 类的 add_argument 方法来添加一个命令行参数。这里的 'echo' 是一个位置参数(positional argument),意味着它在命令行中的位置是重要的,并且用户必须按照程序期望的顺序提供这个参数。

参数 'echo' 后面跟着的 help='the given string' 是一个可选的关键字参数,它提供了关于这个命令行参数的简短描述。当用户运行程序并附带 --help 选项时,这个描述会显示在帮助信息中。

在终端中执行命令

python .\40_Python命令行参数argparse获取.py hello

返回了一个hello,这是因为调用了print(args.echo) 程序将hello传给echo这个参数

还可以设置参数类型

parser.add_argument('square', help='Squares a given number', type=int)
print(args.square ** 2)

如果不是int类型的参数

python .\40_Python命令行参数argparse获取.py hello

就会报错

是int

python .\40_Python命令行参数argparse获取.py  2 

Python中添加可选参数

如果希望将 -v 参数作为布尔开关(启用或禁用详细输出),需要使用 action='store_true'

action='store_true':

  • 这是用于布尔开关类型的参数。指定了该参数时,args.verbose 被设置为 True,否则为 False
  • 它不需要额外的值,只是一个标志。
from argparse import ArgumentParser

#实例化这个类
parser = ArgumentParser()

# 添加 square 参数
parser.add_argument('square', help='计算给定数字的平方', type=int)

# 添加 verbose 参数
#给help提示 给两个可选参数  默认有这两个参数为真
#布尔开关参数:action='store_true'
parser.add_argument('-v', '--verbose', help='启用详细输出', action='store_true')

args = parser.parse_args()

#如果加了这两个参数
if args.verbose:
    print(f'{args.square} squared is {args.square ** 2}')
else:
    print(args.square ** 2)

设置为必填项

required=True

from argparse import ArgumentParser

#实例化这个类
parser = ArgumentParser()

# 添加 square 参数
parser.add_argument('square', help='计算给定数字的平方', type=int)

# 添加 verbose 参数
#给help提示 给两个可选参数  默认有这两个参数为真
parser.add_argument('-v', '--verbose', help='启用详细输出', action='store_true', required=True)

args = parser.parse_args()

#如果加了这两个参数,args.verbose就会判定为真
if args.verbose:
    print(f'{args.square} squared is {args.square ** 2}')
else:
    print(args.square ** 2)

添加选择性参数

想让 -v 参数接受不同的值(如 0、1、2),并根据这些值输出不同的结果

from argparse import ArgumentParser

# 实例化解析器
parser = ArgumentParser()

# 添加 verbose 参数
parser.add_argument('-v', '--verbose', help='设置详细级别', type=int, choices=[0, 1, 2], required=True)

# 解析参数
args = parser.parse_args()

# 根据 verbose 参数输出不同的结果
if args.verbose == 0:
    print("详细级别为 0:基本信息")
elif args.verbose == 1:
    print("详细级别为 1:中等详细信息")
elif args.verbose == 2:
    print("详细级别为 2:详细信息")

设置默认参数

default=3

from argparse import ArgumentParser

# 实例化解析器
parser = ArgumentParser()

parser.add_argument('-s', '--square', help='Squares a given number', type=int, default=3)

# 添加 verbose 参数
parser.add_argument('-v', '--verbose', help='设置详细级别', type=int, choices=[0, 1, 2], required=True)

# 解析参数
args = parser.parse_args()

# 根据 verbose 参数输出不同的结果
if args.verbose == 0:
    print("详细级别为 0:基本信息",f'{args.square} squared is {args.square ** 2}')
elif args.verbose == 1:
    print("详细级别为 1:中等详细信息",f'squared is {args.square ** 2}')
elif args.verbose == 2:
    print("详细级别为 2:详细信息",args.square ** 2)

自己给定参数5,就会覆盖默认参数3

设置count参数

action='count'对-v的v出现次数进行判断

from argparse import ArgumentParser

parser = ArgumentParser()

parser.add_argument('a', type=int, help='base value')
parser.add_argument('b', type=int, help='exponent')
group.add_argument('-v', '--verbose', action='count', help='')

args = parser.parse_args()
result = args.a ** args.b


if args.verbose == 1:
    print(f'the result is {result}')
elif args.verbose == 2:
    print(f'{args.a}**{args.b}={result}')
else:
    print(result)

互斥参数

有s就为真,没s就为false,对v出现次数进行判断

from argparse import ArgumentParser

parser = ArgumentParser()

# 如果参数互相冲突,只允许出现二者之一
group = parser.add_mutually_exclusive_group()

parser.add_argument('a', type=int, help='base value')
parser.add_argument('b', type=int, help='exponent')
group.add_argument('-v', '--verbose', action='count', help='')
group.add_argument('-s', '--silence', action='store_true', help='Generate a silent version of the output')

args = parser.parse_args()
result = args.a ** args.b

if args.silence:
    print('Silenced')
else:
    if args.verbose:
        if args.verbose == 1:
            print(f'the result is {result}')
        elif args.verbose == 2:
            print(f'{args.a}**{args.b}={result}')
        else:
            print(result)

可以自己定义usage

from argparse import ArgumentParser

parser = ArgumentParser()
parser.usage = 'Use it like this ......'

# 如果参数互相冲突,只允许出现二者之一
group = parser.add_mutually_exclusive_group()

parser.add_argument('a', type=int, help='base value')
parser.add_argument('b', type=int, help='exponent')
group.add_argument('-v', '--verbose', action='count', help='')
group.add_argument('-s', '--silence', action='store_true', help='Generate a silent version of the output')

args = parser.parse_args()
result = args.a ** args.b

if args.silence:
    print('Silenced')
else:
    if args.verbose:
        if args.verbose == 1:
            print(f'the result is {result}')
        elif args.verbose == 2:
            print(f'{args.a}**{args.b}={result}')
        else:
            print(result)

  • 40
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值