Python中argparse的用法(Gan)
1.简介
在学习Gan网络的过程中,记录使用过程中未学习到一些函数知识,方便以后可以查阅。在使用Gan的时候,非常困惑argparse究竟是做什么用的,查阅大量资料后 ,发现用法具体如下。
2.argparse的简介
argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数。当你的代码参数需要频繁修改,就需要使用这个参数将你的参数和代码进行分离。
3.argparse的基本用法
首先我们从最基本的框架说起argparse的用法。
添加一个命令行参数,并获取打印
python TestArgParse.py --name=“Ming”
如果后边不加–name则会有一个默认值
控制台会输出Hello–Ming
import argparse
# 使用argparse从命令行获取用户名,然后打印’Hello‘+ 用户名,假设python文件名为TestArgParse.py
def test_argparse():
"""
测试argparse参数的解析
:return:返回解析的参数
"""
# 对参数进行解析
parse = argparse.ArgumentParser(description="Test of argparse")
parse.add_argument("--name",default="Zhou")
return parse
if __name__=='__main__':
parser = test_argparse()
args = parser.parse_args()
name = args.name
print("Hello--{}".format(name))
上面的代码段中,我们显示引入了argparse包,然后通过argparse.ArgumentParser函数生成argparse对象,其中这个函数的description函数表示在命令行显示帮助信息的时候,这个程序的描述信息。之后我们通过对象的add_argument函数来增加参数。这里我们只增加了一个–name的参数,然后后面的default参数表示如果没提供参数,我们默认采用的值。
最后我们通过argpaser对象的parser_args函数来获取所有参数args,然后通过args.name的方式得到我们设置的–name参数的值,可以看到这里argparse默认的参数名就是–name形式里面–后面的字符串。
import argparse
# 使用argparse从命令行获取用户名,然后打印’Hello‘+ 用户名,假设python文件名为TestArgParse.py
def test_argparse():
"""
测试argparse参数的解析
:return:返回解析的参数
"""
# 对参数进行解析
parse = argparse.ArgumentParser(description="Test of argparse")
parse.add_argument("--name",default="Zhou")
parse.add_argument("--age", default=18)
return parse
if __name__=='__main__':
parser = test_argparse()
args = parser.parse_args()
name = args.name
print("Hello--{}".format(name))
print(args)
4.argparse中参数的基本使用
4.1.default:
我们可以设置一个默认值,在命令行未给出参数的情况下,将会使用默认的参数,一般在开发过程不容易出错。
4.2.required:
表示这个参数是否一定需要设置
4.2.type:参数类型
默认的参数类型是str类型,如果你的程序需要一个整数或者布尔型参数,你需要设置type=int或type=bool
4.3.choices:参数值只能从几个选项里面选择
import argparse
# 使用argparse从命令行获取用户名,然后打印’Hello‘+ 用户名,假设python文件名为TestArgParse.py
def test_argparse():
"""
测试argparse参数的解析
:return:返回解析的参数
"""
# 对参数进行解析
parse = argparse.ArgumentParser(description="Test of argparse")
parse.add_argument("--name",default="Zhou")
parse.add_argument("--age", default=18)
parse.add_argument('-arch', required=True, choices=['nlp', 'cv'],help='NLP是自然语言处理,CV是计算机视觉')
return parse
if __name__=='__main__':
parser = test_argparse()
args = parser.parse_args()
name = args.name
print("Hello--{}".format(name))
print('the arch of CNN is {}'.format(args.arch))
print(args)
4.4.help:
指定参数的说明信息,在现实帮助信息的时候,help参数的值可以给使用工具的人提供该参数是用来设置什么的说明,对于大型的项目,help参数和很有必要的,不然使用者不太明白每个参数的含义,增大了使用难度。
4.5.dest:
设置参数在代码中的变量名。argparse默认的变量名是–或-后面的字符串,但是你也可以通过dest=xxx来设置参数的变量名,然后在代码中用args.xxx来获取参数的值。
4.6.nargs
: 设置参数在使用可以提供的个数
import argparse
# 使用argparse从命令行获取用户名,然后打印’Hello‘+ 用户名,假设python文件名为TestArgParse.py
def test_argparse():
"""
测试argparse参数的解析
:return:返回解析的参数
"""
# 对参数进行解析
parse = argparse.ArgumentParser(description="Test of argparse")
parse.add_argument("--name",default="Zhou")
parse.add_argument("--age", default=18)
# '?'0或1个参数
# '*'0或所有参数
# '+'至少一个参数
parse.add_argument('--address', nargs="+",required=True)
parse.add_argument('-arch', required=True, choices=['alexnet', 'vgg'],help='the architecture of CNN, at this time we only support alexnet and vgg.')
return parse
if __name__=='__main__':
parser = test_argparse()
args = parser.parse_args()
name = args.name
print("Hello--{}".format(name))
print('the arch of CNN is {}'.format(args.arch))
print(args)
当设置required为True的时候,必须要赋值一个值,否则会报如下的错误。
python TestArgParse.py --name="Ming" -arch=vgg
usage: TestArgParse.py [-h] [--name NAME] [--age AGE] --address ADDRESS
[ADDRESS ...] -arch {alexnet,vgg}
TestArgParse.py: error: the following arguments are required: --address
参考连接
[1]: https://docs.python.org/3/library/argparse.html
[2]: http://blog.xiayf.cn/2013/03/30/argparse/