0

例如,有两个 sub_commandsrunbatch-runrun解析器如下所示:

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_argumentbatch解析器。或者,还有更好的方法?

4

1 回答 1

0

parser_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_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)

现在两个子解析器都添加了相同的参数。

于 2013-04-23T09:12:58.640 回答