如何使用Python ArgumentParse的subparser

  介绍

这篇文章主要讲解了如何使用Python ArgumentParse的subparser,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

在写一些很小的机器学习项目的时候,我们往往希望训练、测试和推理能共用一个入口主要,但是不同的功能使用不同的输入参数。当然如果三个功能对应三个. py脚本问题也不大,但是毕竟觉得不太优雅。这个时候就需要考虑如何让代码更加简单有条理。

主要是最近在看解析器有关的东西,所以看到了一个项目,里面的使用subparser的地方是值得借鉴的,下面附上代码和部分自己的一些见解

 def main ():
  解析器=argparse.ArgumentParser ()
  subparsers=parser.add_subparsers ()
  
  hparams=make_hparams ()
  #这个函数是直接写了一些超参数,讲真我不太喜欢这个操作,个人还是比较倾向用一个额外的配置文件来存储
  #这些超参,这样输入的只要是配置文件的路径即可,主要是这么做可以看到自己每一步的参数是怎么设置的
  #便于后期出现了问题来排错
  subparser=subparsers.add_parser (“train")
  #添加subparser这里
  subparser。set_defaults(回调=λ参数:run_train (args, hparams))
  #加上调选项,run_train是前期定义的一个函数,这条和后面的args.callback (args)对应
  hparams.populate_arguments (subparser)
  #这里就是作者自己定义的一个函数,本质其实还是一系列的add_argument
  subparser.add_argument (“——numpy-seed",类型=int)
  subparser.add_argument (“——model-path-base",需要=True)
  subparser.add_argument (“——evalb-dir",默认=癊VALB/?
  subparser.add_argument (“——train-path",默认=笆?02 - 21.10 - way.clean")
  subparser.add_argument (“——dev-path",默认=笆?22. auto.clean")
  subparser.add_argument (“——batch-size"=int类型,默认=250)
  subparser.add_argument (“——subbatch-max-tokens"=int类型,默认=2000)
  subparser.add_argument (“——eval-batch-size"=int类型,默认=100)
  subparser.add_argument (“——epochs",类型=int)
  subparser.add_argument (“——checks-per-epoch"=int类型,默认=4)
  subparser.add_argument (“——print-vocabs", action=皊tore_true")
  
  subparser=subparsers.add_parser (“test")
  subparser.set_defaults(回调=run_test)
  subparser.add_argument (“——model-path-base",需要=True)
  subparser.add_argument (“——evalb-dir",默认=癊VALB/?
  subparser.add_argument (“——test-path",默认=笆?23. auto.clean")
  subparser.add_argument (“——test-path-raw",类型=str)
  subparser.add_argument (“——eval-batch-size"=int类型,默认=100)
  
  subparser=subparsers.add_parser (“ensemble")
  subparser.set_defaults(回调=run_ensemble)
  subparser.add_argument (“——model-path-base",娜戈=& # 39;+ & # 39;,要求=True)
  subparser.add_argument (“——evalb-dir",默认=癊VALB/?
  subparser.add_argument (“——test-path",默认=笆?22. auto.clean")
  subparser.add_argument (“——eval-batch-size"=int类型,默认=100)
  
  subparser=subparsers.add_parser (“parse")
  subparser.set_defaults(回调=run_parse)
  subparser.add_argument (“——model-path-base",需要=True)
  subparser.add_argument (“——input-path",类型=str=True)
  subparser.add_argument (“——output-path",类型=str,默认=安澄拧?
  subparser.add_argument (“——eval-batch-size"=int类型,默认=100)
  
  subparser=subparsers.add_parser (“viz")
  subparser.set_defaults(回调=run_viz)
  subparser.add_argument (“——model-path-base",需要=True)
  subparser.add_argument (“——evalb-dir",默认=癊VALB/?
  subparser.add_argument (“——viz-path",默认=笆?22. auto.clean")
  subparser.add_argument (“——eval-batch-size"=int类型,默认=100)
  
  args=parser.parse_args ()
  args.callback (args) 

<强> python学习笔记——argparse模块以及parse_known_args()函数

代码测试。py:

进口argparse   导入系统      解析=argparse.ArgumentParser ()   parse.add_argument (“——learning_rate",类型=浮动,默认=0.01,帮助=俺跏糽earining rate")   parse.add_argument (“——max_steps"=int类型,默认=2000,帮助=癿ax")   parse.add_argument (“——hidden1"=int类型,默认=100,帮助=癶idden1")   旗帜,未解析=parse.parse_known_args (sys.argv [1:])   打印flags.learning_rate   打印flags.max_steps   打印flags.hidden1   打印未解析

如何使用Python ArgumentParse的subparser