Python 如何在argparser的两个子命令中共享arg?
例如,有两个子命令Python 如何在argparser的两个子命令中共享arg?,python,python-3.x,command-line-arguments,argparse,Python,Python 3.x,Command Line Arguments,Argparse,例如,有两个子命令run和batch run,run解析器如下所示: parser_run = sub_parsers.add_parser("run") parser_run.add_argument("-c", "--config", dest="config", required=True, help="specify the config file to use", ) parser_run.add_argument("--from", dest="start_step", d
run
和batch run
,run
解析器如下所示:
parser_run = sub_parsers.add_parser("run")
parser_run.add_argument("-c", "--config", dest="config", required=True,
help="specify the config file to use", )
parser_run.add_argument("--from", dest="start_step", default=0, type=int,
help="Only step after this number will be processed")
parser_run.add_argument("--to", dest="end_step", default=100, type=int,
help="Only step before this number will be processed ")
parser_run.add_argument("--skip", dest="skip_step", default="",
help="Steps to skip, use comma as seperator")
parser_run.add_argument("-v", "--verbose-level", dest="verbose_level", type=int, default=2)
parser_run.add_argument("--dry-run", dest="dry_run", action="store_true", default=False)
parser_run.add_argument("--allow-dangling", dest="allow_dangling", action="store_true", default=False)
parser_run.add_argument("--resume", dest="resume", action="store_true", default=False)
parser_run.add_argument("--remove", dest="clean", action="store_true", default=False)
现在我需要编写
batch
解析器,它包含run
的所有参数,但是-c
(它使用-b
来指定批配置文件)。我只是想知道是否需要将add_argument
的所有代码复制并粘贴到batch
解析器中。或者有更好的方法吗?解析器运行的对象就是一个对象,因此您可以将其分配给另一个变量,使用循环,等等:
parser_run = sub_parsers.add_parser("run")
parser_run.add_argument("-c", "--config", dest="config", required=True,
help="specify the config file to use", )
parser_batch = sub_parsers.add_parser("batch")
parser_batch.add_argument("-b", "--batch-config", dest="config", required=True,
help="specify the batch config file to use", )
for sub_parser in (parser_run, parser_batch):
sub_parser.add_argument("--from", dest="start_step", default=0, type=int,
help="Only step after this number will be processed")
sub_parser.add_argument("--to", dest="end_step", default=100, type=int,
help="Only step before this number will be processed ")
sub_parser.add_argument("--skip", dest="skip_step", default="",
help="Steps to skip, use comma as seperator")
sub_parser.add_argument("-v", "--verbose-level", dest="verbose_level", type=int, default=2)
sub_parser.add_argument("--dry-run", dest="dry_run", action="store_true", default=False)
sub_parser.add_argument("--allow-dangling", dest="allow_dangling", action="store_true", default=False)
sub_parser.add_argument("--resume", dest="resume", action="store_true", default=False)
sub_parser.add_argument("--remove", dest="clean", action="store_true", default=False)
现在,两个子解析器都添加了相同的参数