argparse是一个Python模块:命令行选项、参数和子命令解析器。
主要有三个步骤:
创建 ArgumentParser() 对象
调用 add_argument() 方法添加参数
使用 parse_args() 解析添加的参数
name or flags - 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。
action - 当参数在命令行中出现时使用的动作基本类型。
nargs - 命令行参数应当消耗的数目。
const - 被一些 action 和 nargs 选择所需求的常数。
default - 当参数未在命令行中出现时使用的值。
type - 命令行参数应当被转换成的类型。
choices - 可用的参数的容器。
required - 此命令行选项是否可省略 (仅选项可用)。
help - 一个此选项作用的简单描述。
metavar - 在使用方法消息中使用的参数值示例。
dest - 被添加到 parse_args() 所返回对象上的属性名。
其中:
nargs='*' 表示参数可设置零个或多个
nargs=' '+' 表示参数可设置一个或多个
nargs='?' 表示参数可设置零个或一个
store_true 是指带触发action时为真,不触发则为假。通俗讲是指运行程序是否带参数
一、没有default
import argparse
parser = argparse.ArgumentParser(description='test.py')
parser.add_argument('--cuda', type=bool, default=True, help='use cuda')
parser.add_argument('--cpu',action='store_true',help='use cpu')
args = parser.parse_args()
print("cuda: ",args.cuda)
print("cpu: ",args.cpu)
如果运行命令为:python test.py
则输出为:
cuda: True
cpu: False
二、有default
当然 ‘store_true’ 也可以设置 default ,虽然这样看起来很奇怪,也不好用。如:
parser.add_argument('--cpu',default=True,action='store_true',help='use cpu')
print("cpu: ",args.cpu)
default=True时运行程序时加不加 “ --cpu ” 输出都是 cpu: True
但default=False就不一样了:
parser.add_argument('--cpu',default=False,action='store_true',help='use cpu')
print("cpu: ",args.cpu)
若运行命令是 python test.py,则输出 cpu: False
若运行命令是 python test.py --cpu,则输出 cpu: True