最近碰到2次了,总结一下。
不要使用位置参数,每次都按照下边的格式来就好
这个库相当于是将很多参数集合到了我们自己创建的一个存储容器中parser = argparse.ArgumentParser(description=‘This is a example.’)。
然后可以通过在执行该python文件时,统一传入容器中参数的值。
如果不传入参数值,则该参数的值默认为None。
当然了,如果在容器中定义的参数已经有了默认值了,则可以传入参数值时为默认值。
# 本文件名为learn.py
import argparse
parser = argparse.ArgumentParser(description='This is a example.')
# 创建名为parser的对象,就是个储存容器。description描述的是该容器是干啥的。
parser.add_argument('--number',type=int,help='enter one number',default = '2')
parser.add_argument('--name',help='input your name please',type=str)
# 这波操作是在容器中加入两关键字参数(number和name)(不要用位置参数,不好)。
# type是将待会传入这两个参数转换为什么类型。help是对这个参数的描述。
# 以上对对象的描述和对参数的描述,都仅在调用帮助命令时才会出现
# 如果参数定义有默认值default,则在外部不向容器中传递参数值时,该参数会使用默认值;
# 如果没有默认值的话,则该参数的值为None
args = parser.parse_args()
# 此操作学名解析参数,老土话翻译为:激活刚刚弄好的容器和里边的参数
print (args)
# 不输入时,输出为Namespace(name=None, number=2)
print (args.number)
# 不输入时,输出为2;
print (args.name)
# 不输入时,输出为None
键入python learn.py时的情况如下:
PS C:\Users\Adam Wu\Desktop> python learn.py
Namespace(name=None, number=2)
2
None
键入python learn.py --h的情况:
PS C:\Users\Adam Wu\Desktop> python learn.py --h
usage: learn.py [-h] [--number NUMBER] [--name NAME]
This is a example.
optional arguments:
-h, --help show this help message and exit
--number NUMBER enter one number
--name NAME input your name please
键入python learn.py --name Adam_Wu --number 666的情况:
PS C:\Users\Adam Wu\Desktop> python learn.py --name Adam_Wu --number 666
Namespace(name='Adam_Wu', number=666)
666
Adam_Wu
也可以选择性的键入部分参数。键入python learn.py --number 666的情况:
PS C:\Users\Adam Wu\Desktop> python learn.py --number 666
Namespace(name=None, number=666)
666
None
补充,当碰到有参数action=‘store_true’时,则表示,当在命令行输入–debug时,代码中的debug置为True。
parser.add_argument('--debug', action='store_true',
help='Enables debug mode')
更多操作请参照:argparse.ArgumentParser()用法解析