代码
parser = argparse.ArgumentParser(prog='train.py')
parser.add_argument('--seed', type=int, default=RANDOM_SEED, help="Seed value for RNGs")
parser.add_argument('--task', action='store', choices=list(TASKS.keys()), default='copy',
help="Choose the task to train (default: copy)")
parser.add_argument('-p', '--param', action='append', default=[],
help='Override model params. Example: "-pbatch_size=4 -pnum_heads=2"')
parser.add_argument('--checkpoint-interval', type=int, default=CHECKPOINT_INTERVAL,
help="Checkpoint interval (default: {}). "
"Use 0 to disable checkpointing".format(CHECKPOINT_INTERVAL))
parser.add_argument('--checkpoint-path', action='store', default='./',
help="Path for saving checkpoint data (default: './')")
parser.add_argument('--report-interval', type=int, default=REPORT_INTERVAL,
help="Reporting interval")
argcomplete.autocomplete(parser)
args = parser.parse_args()
args.checkpoint_path = args.checkpoint_path.rstrip('/')
return args
解析
parser = argparse.ArgumentParser(prog='train.py')
首先创建了一个 ArgumentParser 对象 parser,指定了一个 prog 参数,该参数会在帮助信息中显示程序的名称。
parser.add_argument('--seed', type=int, default=RANDOM_SEED, help="Seed value for RNGs")
添加了一个名为 --seed 的命令行参数,类型为整数,缺省值为了一个名为 RANDOM_SEED 的常量,帮助信息为 “Seed value for RNGs”。
parser.add_argument('--task', action='store', choices=list(TASKS.keys()), default='copy',
help="Choose the task to train (default: copy)")
添加了一个名为 --task 的命令行参数,指定了参数的行为为 store(将命令行参数存储到 Namespace 对象中),限制了可选值为 TASKS 字典的键列表,并且缺省值设置为 ‘copy’,帮助信息为 “Choose the task to train (default: copy)”。
parser.add_argument('-p', '--param', action='append', default=[],
help='Override model params. Example: "-pbatch_size=4 -pnum_heads=2"')
添加了一个名为 -p 或 --param 的可重复命令行参数,指定了参数的行为为 append(追加到一个列表中),缺省值为一个空列表,帮助信息为 “Override model params. Example: “-pbatch_size=4 -pnum_heads=2””。
parser.add_argument('--checkpoint-interval', type=int, default=CHECKPOINT_INTERVAL,
help="Checkpoint interval (default: {}). "
"Use 0 to disable checkpointing".format(CHECKPOINT_INTERVAL))
添加了一个名为 --checkpoint-interval 的命令行参数,类型为整数,缺省值为 CHECKPOINT_INTERVAL(常量定义),帮助信息为 “Checkpoint interval (default: {CHECKPOINT_INTERVAL}). Use 0 to disable checkpointing”。
parser.add_argument('--checkpoint-path', action='store', default='./',
help="Path for saving checkpoint data (default: './')")
添加了一个名为 --checkpoint-path 的命令行参数,指定了参数的行为为 store,缺省值为字符串 ‘./’,帮助信息为 “Path for saving checkpoint data (default: ‘./’)”。
parser.add_argument('--report-interval', type=int, default=REPORT_INTERVAL,
help="Reporting interval")
添加了一个名为 --report-interval 的命令行参数,类型为整数,缺省值为 REPORT_INTERVAL(常量定义),帮助信息为 “Reporting interval”。
argcomplete.autocomplete(parser)
使用 argcomplete 库对命令行参数进行自动补全处理。
args = parser.parse_args()
args.checkpoint_path = args.checkpoint_path.rstrip('/')
解析命令行参数,并使用 rstrip() 方法删除 args.checkpoint_path 右侧的斜杠 /。最后将解析后的命令行参数 args 返回。