主要参考了网上的一些博文,在复现医学图像分割的深度学习论文的时候,发现师兄很喜欢用这个函数,一开始还不是很理解,所以今天来彻底弄明白到底是个啥东西。
定义&用途
argparse是python自带的命令行参数解析包,可以用来方便地读取命令行参数,使用比较简单。
基本框架
采用argparse获取用户的名字及年龄,因为比较简单所以是在linux上用vim编辑器写的python文件,文件命名为:test.py。
import argparse
def main():
p = argparse.ArgumentParser("description="Demo of argparse"")
p.add_argument('-n', '--name', default='Li')
p.add_argument('-y', '-year', default='20')
args = p.parse_args()
print(args)
name = p.name
year = args.year
print('Hello {} {}'.format(name, year))
if __name__ == "__main__":
main()
写好后保存退出,执行命令:
python test.py
结果如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNyROBlLygzN0ATN1gTM2AzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
1. 在上面的代码中,我们首先是导入了一个名为
argparse
的包,然后使用了argparse包中的一个类
ArgumentParser
生成了一个
parser
对象(参数解析器),即
p
。其中,
description
是用来描述这个参数解析器的用途,当在命令行显示帮助信息的时候会看到description描述的信息。
2. 接着我们使用对象的
add_argument
方法来增加参数。在这段代码中我们增加了两个参数
name
和
year
,其中
-n
和
--name
表示同一个参数,
default
表示我们在运行命令的时候如果没有提供参数,程序会将此值当作参数值。
3. 最后采用对象的
parse_args
方法获取解析的参数,由结果图可以看到,
Namespace
中有两个属性(或者说成员)。
P.S. 当
'-'
和
'--'
同时出现的时候,系统默认后者为参数名,前者不是,但是在命令行输入的时候没有这个区分。
当执行命令:
结果如下图:
本文主要参考argparse基本用法