创建一个--all参数



我正在创建一个python脚本,该脚本将XML格式的日志文件解析为SQLite数据库文件。有几种不同类型的日志文件,默认情况下,脚本只处理给定文件夹中的process-*.xml文件。使用argparser选项,用户可以控制应包括哪些日志文件。

argparser = argparse.ArgumentParser(description="Process log files into a SQLite database.")
argparser.add_argument("--control", action=argparse.BooleanOptionalAction, default=False, help="parse control-*.xml into the database")
argparser.add_argument("--dream", action=argparse.BooleanOptionalAction, default=False, help="parse dream-*.xml into the database")
argparser.add_argument("--error", action=argparse.BooleanOptionalAction, default=False, help="parse error-*.xml into the database")
argparser.add_argument("--lis", action=argparse.BooleanOptionalAction, default=False, help="parse lis-*.xml into the database")
argparser.add_argument("--pass", action=argparse.BooleanOptionalAction, default=False, help="parse pass-*.xml into the database", dest="pass_xml")  # The default .pass not valid attribute
argparser.add_argument("--process", action=argparse.BooleanOptionalAction, default=True, help="parse process-*.xml into the database")
argparser.add_argument("--uif", action=argparse.BooleanOptionalAction, default=False, help="parse uif-*.xml into the database")

还有一些与此无关的附加参数,为了可读性,我没有在这里包含这些参数。

我想添加一个--all参数,它将上述所有参数设置为True。如果例如--all --no-control将除control之外的所有自变量设置为True,则会更好,CCD_7将保留为False。这怎么可能是复杂的呢?

简单明了的解决方案怎么样?

argparser.add_argument("--all", action=argparse.store_true, default=False, help="All of the above")
...
if args.all:
args.control = True
args.dream = True
args.error = True
...

添加:

要使--all --no-foo工作,请从.add_arguments中删除default=False,然后如果未指定,则将该值设置为None,如果指定了--no-foo,则将其设置为CCD13。然后使用

if args.all:
if args.foo == None: args.foo = True
if args.bar == None: args.bar = True
...

这样,只有在未使用--no-foo选项显式设置为False的情况下,参数才会设置为True

相关内容

  • 没有找到相关文章

最新更新