argparse用法总结

argparse是python自带的命令行参数解析包,可以用来方便的读取命令行参数,当代码需要频繁的修改参数时,使用这个工具可以将参数和代码分开,让代码更简洁,适用范围更广。

1、基本的框架

导入argparse包 import argparse 使用argparse从命令行获取用户名,然后打印’Hello ‘+ 用户名,假设python文件名为practice.py:
在这里插入图片描述
在上面的代码中,先导入了argparse的包,然后ArgumentParser生成一个parser对象(参数解析器),其中description是描述这个参数是干什么的,当在命令行显示参数的帮助信息时就会看到description的描述信息。

通过对象的add_argument函数来增加参数,这里增加了两个参数name和year。其中’-n’和’–name’是表示同一个参数,default表示当在运行命令时若没有提供参数,程序会将此值作为参数值。
最后采用parse_args获得参数解析,当’-‘和’–'同时出现的时候,系统默认后者为参数名,前者不是,但是在命令行输入的时候没有这个区分接下来就是打印参数信息了。
在这里插入图片描述
在这里插入图片描述

2、default

参数default表示没有设置值情况下默认参数。如上例中所示,default表示命令行没有设置该参数的时候,程序中用什么值来代替。

3、requried

参数requried 表示这个参数是否需要一定的设置。如果设置了required=True,则在实际运行的时候不设置该参数将报错:
在这里插入图片描述
运行下面命令会报错:
在这里插入图片描述

4、type:参数类型

默认的参数类型是str类型,如果需要一个整数或者布尔型参数,需要设置type=int或type=bool,下面是一个打印平方的栗子

import argparse

def get_parser():
    parser = argparse.ArgumentParser(
        description='Calculate square of a given number')
    parser.add_argument('-number', type=int)

    return parser


if __name__ == '__main__':
    parser = get_parser()
    args = parser.parse_args()
    res = args.number ** 2
    print('square of {} is {}'.format(args.number, res))
    

#########执行结果############
$ python square.py -number 5
square of 5 is 25
5、choice:参数只能从几个选项里面选择
# file-name: choices.py
import argparse

def get_parser():
    parser = argparse.ArgumentParser(
        description='choices demo')
    parser.add_argument('-arch', required=True, choices=['alexnet', 'vgg'])

    return parser

if __name__ == '__main__':
    parser = get_parser()
    args = parser.parse_args()
    print('the arch of CNN is '.format(args.arch))

    
#########执行结果############
$ python choices.py -arch resnet
usage: choices.py [-h] -arch {alexnet,vgg}
choices.py: error: argument -arch: invalid choice: 'resnet' (choose from 'alexnet', 'vgg')

# 因为所给的-arch参数不在备选参数choices里,所以会报错
6、help:指定参数的说明

help可以对该参数是用来干什么的做一说明,对于大型的项目,help参数是很有必要的,不然使用者不太明白每个参数的含义,增大了使用难度。

# file-name: help.py
import argparse

def get_parser():
    parser = argparse.ArgumentParser(
        description='help demo')
    parser.add_argument('-arch', required=True, choices=['alexnet', 'vgg'],
        help='the architecture of CNN, at this time we only support alexnet and vgg.')

    return parser


if __name__ == '__main__':
    parser = get_parser()
    args = parser.parse_args()
    print('the arch of CNN is '.format(args.arch))

在命令行加-h或–help参数运行该命令,获取帮助信息的时候,结果如下

$ python help.py -h
usage: help.py [-h] -arch {alexnet,vgg}

choices demo

optional arguments:
  -h, --help           show this help message and exit
  -arch {alexnet,vgg}  the architecture of CNN, at this time we only support
                       alexnet and vgg.

7、dest:设置参数在代码中的变量名

argparse默认的变量名是–或-后面的字符串,也可以通过dest=xxx来设置参数的变量名,然后在代码中用args.xxx来获取参数的值。

8、nargs: 设置参数在使用可以提供的个数

使用方式如下:

parser.add_argument('-name', nargs=x)

其中x的候选值和含义如下:

值  含义
N   参数的绝对个数(例如:3'?'   01个参数
'*'   0或所有参数
'+'   所有,并且至少一个参数
# file-name: nargs.py
import argparse

def get_parser():
    parser = argparse.ArgumentParser(
        description='nargs demo')
    parser.add_argument('-name', required=True, nargs='+')

    return parser


if __name__ == '__main__':
    parser = get_parser()
    args = parser.parse_args()
    names = ', '.join(args.name)
    print('Hello to {}'.format(names))

执行命令和结果如下:

$ python nargs.py -name A B C
Hello to A, B, C
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值