全栈工程师开发手册 (作者:栾鹏)
架构系列文章
argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。
设置一个解析器
该解析器可以用于处理命令行参数。
import argparse
parser = argparse.ArgumentParser(description='This is some description')
定义参数
参数若为单纯字符串(前无-)的时候,所输入的参数值即赋值给该参数。
parser.add_argument('par1', help="test action")
当linux命令行为python arg.py test
则Python内接收为’par1’=test
若为有-或者–的参数,则需要打开开关并输入参数,也就是说在命令行中必须包含–par1,这样的字眼,或者用action存储后直接打开开关
parser.add_argument('--verbosity', help="test action")
当linux命令行为 python arg.py --par1 value1
则Python内接收为'par1'=value1
此方法常用于设置可选开关
参数可以触发不同的动作,动作由 add_argument() 方法的 action 参数指定。
parser.add_argument('--lr_use', action='store_true', default=False)
当命令行输入了–lr_use,则会出发store保存为true
如果没有输入–lr_use,则默认为false
如果没有设置默认值,如果是store_false,则默认值是True,如果是store_true,则默认值是False。
所以最好在run之前打印输出查看
如果提供 dest 参数,参数值就保存为命令行参数解析时返回的命名空间对象中名为该 dest 参数值的一个属性。
也就是说参数的名称改成dest指定的名称
例如
parser.add_argument("-m", help="Running mode", dest="mode",default="local")
获取的参数为mode:local
add_argument()的choices参数可设置参数值的范围
parser.add_argument('-v', help='test choices', type=int, choices=[0, 1, 2])
default参数设置参数默认值
设置矛盾选项
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true")
至此-v和-q不能同时出现
将获取的参数转变为字典
args = vars(parser.parse_args())