argparse用法总结

转载:argparse简要用法总结 | Yunfeng's Simple Blog

文章目录

目录

文章目录

前言

一、基本框架

二、add_argnment函数常用参数

1、default:没有设置值情况下的默认参数

2、required:没有设置值情况下的默认参数

3、type:参数类型 

4、choices:参数值只能从几个选项里面选择

 5、help:指定参数的说明信息

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

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


前言

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


一、基本框架

下面是使用argparse从terminal获取name和age,然后打印My name is { }.I am { } years old。python文件名为mian.py。(使用软件:pycharm;python版本3.8)

# file-name:mian.py
import argparse  # 导入argparse包

def get_parser():
    parser = argparse.ArgumentParser(description="Demo of argparse")
    # 通过argparse.ArgumentParser函数生成argparse对象,description表示在命令行显示帮助信息,即这个程序的描述信息
    parser.add_argument('--name', default='Great') # 使用argparse对象的add_argument函数来增加参数
    parser.add_argument('--age',default='20') # default参数表示如果没有提供参数,就采用默认值。
    return parser

if __name__ == '__main__':
    parser = get_parser()
    args = parser.parse_args() # 解析参数,它将检查命令行,把每个参数转换为适当的类型然后调用相应的操作。
    name = args.name
    age = args.age
    print('My name is {}.I am {} years old.'.format(name,age))

在 terminal输入python mian.py,也许会出现找不到main.py的情况,那就输入python mian.py的绝对路径,此时采用的默认的值。

>python mian.py
My name is Great.I am 20 years old.

若在terminal输入python mian.py --name wt -- age 22。得到的结果如下:

>python mian.py --name wt --age 22  
My name is wt.I am 22 years old.

上面通过parser_args函数来获取所有参数args,然后通过args.name,args.age的方式得到设置的--name,--age的值,这里argparse默认的参数名就是--name,--age后面的字符串。

二、add_argnment函数常用参数

1、default:没有设置值情况下的默认参数

如同上例中展示的,default表示命令行没有设置该参数的时候,程序中用什么值来代替。

2、required:没有设置值情况下的默认参数

如果设置了required=True,则在实际运行的时候不设置该参数将报错:

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

 则运行下面的代码会报错:

>python mian.py
usage: mian.py [-h] --name NAME [--age AGE]
mian.py: error: the following arguments are required: --name

3、type:参数类型 

默认的参数类型是str类型,如果你的程序需要一个整数或者布尔型参数,你需要设置type=inttype=bool。

4、choices:参数值只能从几个选项里面选择

 如下面的代码:

# file-name: main.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 mian.py -arch resnet
usage: mian.py [-h] -arch {alexnet,vgg}
mian.py: error: argument -arch: invalid choice: 'resnet' (choose from 'alexnet', 'vgg')

 5、help:指定参数的说明信息

在现实帮助信息的时候,help参数的值可以给使用工具的人提供该参数是用来设置什么的说明,对于大型的项目,help参数和很有必要的,不然使用者不太明白每个参数的含义,增大了使用难度。

例如:

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

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

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

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

使用的方式如下:

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

x的候选值和含义如下:

值  含义
N   参数的绝对个数(例如:3)
'?'   0或1个参数
'*'   0或所有参数
'+'   所有,并且至少一个参数

 例子:

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 mian.py -name a b c
Hello to a, b, c


你可能感兴趣的:(python代码,python,开发语言)