结论:不带默认值default的情况下, action的属性值结果和变量值结果是相反的
例如:
当 action='store_true'
import argparse
parser = argparse.ArgumentParser() # 生成一个设置参数的对象
parser.add_argument("--do_train", action='store_true', help="Whether to run training.")
args = parser.parse_args()
print(args.do_train) # False
当action='store_false'
import argparse
parser = argparse.ArgumentParser() # 生成一个设置参数的对象
parser.add_argument("--do_train", action='store_false', help="Whether to run training.")
args = parser.parse_args()
print(args.do_train) # True
action的功能相当于是一个开关
下面完成测试代码
import argparse
parser = argparse.ArgumentParser() # 生成一个设置参数的对象
parser.add_argument("--do_train", action='store_true', help="Whether to run training.")
parser.add_argument("--do_eval", action='store_true', help="Whether to run eval on the dev/test set.")
parser.add_argument("--do_direct_eval", action='store_true',
help="Whether to run direct eval on the dev/test set.")
args = parser.parse_args()
print(args.do_train) # False
print(args.do_eval) # False
if args.do_train:
"""训练代码"""
print("开始训练")
if args.do_eval:
"""验证代码"""
print("开始验证")
运行结果:默认都不会执行
将 action='store_true', 改为 action='store_false'
import argparse
parser = argparse.ArgumentParser() # 生成一个设置参数的对象
parser.add_argument("--do_train", action='store_false', help="Whether to run training.")
parser.add_argument("--do_eval", action='store_true', help="Whether to run eval on the dev/test set.")
parser.add_argument("--do_direct_eval", action='store_true',
help="Whether to run direct eval on the dev/test set.")
args = parser.parse_args()
print(args.do_train) # True
print(args.do_eval) # False
if args.do_train:
"""训练代码"""
print("开始训练")
if args.do_eval:
"""验证代码"""
print("开始验证")
输出结果:
将 action=‘store_true’,改为 action=‘store_false’
import argparse
parser = argparse.ArgumentParser() # 生成一个设置参数的对象
parser.add_argument("--do_train", action='store_true', help="Whether to run training.")
parser.add_argument("--do_eval", action='store_false', help="Whether to run eval on the dev/test set.")
parser.add_argument("--do_direct_eval", action='store_true',
help="Whether to run direct eval on the dev/test set.")
args = parser.parse_args()
print(args.do_train) # False
print(args.do_eval) # True
if args.do_train:
"""训练代码"""
print("开始训练")
if args.do_eval:
"""验证代码"""
print("开始验证")
运行结果:
结论:变量结果与action的值无关, 相当于开关失效 , 默认值的结果就是变量的结果
例子:
当 action=‘store_true’, default=False
import argparse
parser = argparse.ArgumentParser() # 生成一个设置参数的对象
parser.add_argument("--do_train", action='store_true', default=False, help="Whether to run training.")
args = parser.parse_args()
print(args.do_train) # False
当 action=‘store_false’, default=False
import argparse
parser = argparse.ArgumentParser() # 生成一个设置参数的对象
parser.add_argument("--do_train", action='store_false', default=False, help="Whether to run training.")
args = parser.parse_args()
print(args.do_train) # False
说明此时action的属性值就没有用要主要看defaule的默认值
1.2.1测试代码import argparse
parser = argparse.ArgumentParser() # 生成一个设置参数的对象
parser.add_argument("--do_train", action='store_true', default=False, help="Whether to run training.")
parser.add_argument("--do_eval", action='store_true', help="Whether to run eval on the dev/test set.")
parser.add_argument("--do_direct_eval", action='store_true',
help="Whether to run direct eval on the dev/test set.")
args = parser.parse_args()
print(args.do_train)
print(args.do_eval)
if args.do_train:
"""训练代码"""
print("开始训练")
if args.do_eval:
"""验证代码"""
print("开始验证")
运行结果
import argparse
parser = argparse.ArgumentParser() # 生成一个设置参数的对象
parser.add_argument("--do_train", action='store_false', default=False, help="Whether to run training.")
parser.add_argument("--do_eval", action='store_true', help="Whether to run eval on the dev/test set.")
parser.add_argument("--do_direct_eval", action='store_true',
help="Whether to run direct eval on the dev/test set.")
args = parser.parse_args()
print(args.do_train)
print(args.do_eval)
if args.do_train:
"""训练代码"""
print("开始训练")
if args.do_eval:
"""验证代码"""
print("开始验证")
运行结果:
测试代码
# Testaction.py
import argparse
parser = argparse.ArgumentParser() # 生成一个设置参数的对象
parser.add_argument("--do_train", action='store_true', help="Whether to run training.")
parser.add_argument("--do_eval", action='store_true', help="Whether to run eval on the dev/test set.")
parser.add_argument("--do_direct_eval", action='store_true',
help="Whether to run direct eval on the dev/test set.")
args = parser.parse_args()
print(args.do_train)
print(args.do_eval)
if args.do_train:
"""训练代码"""
print("开始训练")
if args.do_eval:
"""验证代码"""
print("开始验证")
输入命令:
python Testaction.py
运行如下代码:
运行结果:
如果想要开始训练代码则打开开关文件后面加–do_train:
输入命令:
python Testaction.py --do_train
运行结果:
同理可以打开验证模型的开关这里就不讲解了
测试代码:
# Testaction.py
import argparse
parser = argparse.ArgumentParser() # 生成一个设置参数的对象
parser.add_argument("--do_train", action='store_true', default=False, help="Whether to run training.")
parser.add_argument("--do_eval", action='store_true', help="Whether to run eval on the dev/test set.")
parser.add_argument("--do_direct_eval", action='store_true',
help="Whether to run direct eval on the dev/test set.")
args = parser.parse_args()
print(args.do_train)
print(args.do_eval)
if args.do_train:
"""训练代码"""
print("开始训练")
if args.do_eval:
"""验证代码"""
print("开始验证")
运行命令:(默认不训练)
python Testaction.py
运行结果:
运行命令:(打开开关)
python Testaction.py --do_train
运行结果:
相关博客:
https://blog.csdn.net/tsinghuahui/article/details/89279152
https://blog.csdn.net/LemonTree_Summer/article/details/80749359



