python中argparse库的基本用法

python中argparse库的基本用法

参考了以下链接的内容,我简单地搬运了一些。
https://blog.csdn.net/yy_diego/article/details/82851661
http://vra.github.io/2017/12/02/argparse-usage/

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

  1. 先来一个基本的框架,便于熟悉整个使用过程
import argparse
  
def main():
    parser=argparse.ArgumentParser(description="Demo of argparse")
    parser.add_argument('-n','--name',default='Jack',type=strhelp='argument:name')
    parser.add_argument('-y','--year', default=20,type=int,
                        help='argument:age')
    args = parser.parse_args()
    print(args)
    name = args.name
    year = args.year
    print("hello,My name is {} and I'm {} years old".format(name,year))

if __name__ == '__main__':
    main()

输出结果是

Namespace(name='Jack', year=20)
hello,My name is Jack and I'm 20 years old

在上面的代码中,我们import了argparse这个包,然后用包中的ArgumentParser类生成了一个parser对象(参数解析器),其中的description描述这个参数解析器是干什么的,当我们在命令行显示帮助信息的时候会看到description描述的信息。

接着我们通过对象的add_argument函数来增加参数。其中’-n’,’–name’表示同一个参数,
-n是为了书写方便,实际最后也是传入到name当中。default参数表示我们在运行命令时若没有提供参数,程序会将此值当做参数值。

当执行命令python arg.py -h可以查看帮助信息
python中argparse库的基本用法_第1张图片
当然,我们可以在执行命令的时候传入参数。
例如:python arg.py -n Rose -y 18 或者 python arg.py --name Rose --year 18
输出结果都是一样的
在这里插入图片描述
add_argument函数常用的参数如下,可参考链接

http://vra.github.io/2017/12/02/argparse-usage/

2. default:没有设置值情况下的默认参数
如同上例中展示的,default表示命令行没有设置该参数的时候,程序中用什么值来代替。
3. required: 表示这个参数是否一定需要设置
如果设置了required=True,则在实际运行的时候不设置该参数将报错:

...
parser.add_argument('-name', required=True)
...

则运行下面的命令会报错:
在这里插入图片描述
4. type:参数类型
默认的参数类型是str类型,如果你的程序需要一个整数或者布尔型参数,你需要设置type=int或type=bool
5. choices:参数值只能从几个选项里面选择
如下面的代码:

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参数resnet不在备选的choices之中,所以会报错
6. help:指定参数的说明信息
在现实帮助信息的时候,help参数的值可以给使用工具的人提供该参数是用来设置什么的说明,对于大型的项目,help参数和很有必要的,不然使用者不太明白每个参数的含义,增大了使用难度。

你可能感兴趣的:(python学习)