argparse模块中的参数action、dest使用
在运行py文件时发现有些指令直接在py文件后面接上--path
然后后面什么也没接,没接参数或者路径之类的,例如python demo.py --data_dir data --path
,可以发现没有值赋给path,有人会说应该是缺省值default=xx
之类,那既然有缺省值,我何必写上--path
呢?这时就发现有这么一个参数 action=xx
,写不写上 --path
结果是不一样的。
action=‘store_true’
action=‘store_false’
具体来说: store_true
就代表着一旦指令里写了这个参数,那么将其值设为True,没有时,默认状态下其值为False。同理:store_false
代表一旦命令中有此参数,其值则变为False,默认为True。
dest:如果提供dest,例如dest=“datapath”,那么可以通过args.datapath访问该参数。具体例子如下:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
"--data_dir",
"-d",
dest="data_dir",
required=True, #必须要写该参数
help="The directory which holds all preprocessed data.",
)
parser.add_argument(
"--skip",
dest="skip",
action="store_true", #写了--skip,那么skip=True,否则为False
default=False,
help="If set, previously-processed shapes will be skipped",
)
args = parser.parse_args()
print(args)
print(args.skip)
输入命令:
python test.py -d data --skip
输出:
Namespace(data_dir='data', skip=True)
True
由于skip参数里有dest,那么args.skip就等于True