包含可选的CLI参数

时间:2017-08-01 21:04:40

标签: python

我试图编写一个不同的python脚本,具体取决于是否提供了某些可选参数。

我目前有3个案例:

  1. 仅限CLI选项
  2. 仅限配置文件
  3. 配置文件和数据文件
  4. 配置和数据文件也通过c​​li args保护。

    以下是我想要改进的内容:

        if args.name is not None and\
       (args.delay is None or
        args.hostid is None or
        args.interfaceid is None or
        args.key_ is None or
        args.type is None
       ):
    

    当然,这并不包括任何未给出args.name的情况,但列表中的任何其他情况都是

    我找到了关于互斥args的文档,但没有针对这种情况。也许我只是错过了它。

1 个答案:

答案 0 :(得分:0)

config_file = args.name
cli_options_present = any(getattr(args, a) is None
                          for a in 'delay hostid interfaceid key_ type'.split())
if not bool(config_file) ^ cli_options_present:
    raise ValueError('Must specify either CLI options or config file, but not both.')

if config_file:
    if args.data_file:
        pass  # fill in
    else:
        pass  # fill in
else:
    pass  # fill in

^是xor(独占或)操作。