argparse python 一个变量中的两个可选项

argparse python two optionals in one variable

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

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

文件必须始终作为参数传递,目录可以也可以不传递,name1 和 name2 必须传递 none 个或同时传递它们。

这就是我现在拥有的:

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")

正在显示帮助:

usage: wacv [-h] file [resources_dir] names names

我希望它是:

Usage: wacv file [res_dir] [name1 name2]

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

我认为你应该使用

(`--names`, nargs=2)

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

的可选字符串分开

您可以使用 nargs='*',允许 0、1 或更多。但是2个字符串会被分配给filedir; 3 到文件,目录,1 到名称等。换句话说,它不能通过内容来判断一个可选字符串是属于 dir 还是属于 names。它严格按照位置进行。

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