Argparse python 在一个变量中有两个可选



我有一个带有以下参数的程序:

  1. 文件
  2. 目录
  3. 名称1
  4. 名称2

文件必须始终作为参数传递,目录可以或不传递,并且 name1 和 name2 必须不传递它们中的任何一个或同时传递它们。

这就是我此刻所拥有的:

parser = argparse.ArgumentParser()
parser.add_argument("file", help="The file")
parser.add_argument("resources_dir", default='.', nargs='?', help="The directory of media files")
parser.add_argument("name", nargs=2, help="names")

帮助显示:

用法: WACV [-H] 文件 [resources_dir] 名称名称

我希望它是:

用法: wacv 文件 [res_dir] [名称 1 名称 2]

但我希望"名称"参数就像我之前所说的那样。我怎样才能做到这一点?

我认为你应该使用

(`--names`, nargs=2)

这使得它们成为可选的,但如果提供,则需要 2。 此外,它将这 2 个字符串与"resources_dir"的可选字符串分开。

您可以使用nargs='*',允许 0、1 或更多。 但是 2 个字符串将分配给filedir;3个用于归档、目录,1个用于姓名等。 换句话说,它无法通过内容判断可选字符串是属于dir还是属于names。 它严格按位置进行。

无论如何,没有0 or 2 nargs,除非我上面建议。

最新更新