argparse python在一个变量中有两个选项

时间:2017-08-10 01:31:55

标签: python argparse

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

  1. 文件
  2. 目录
  3. 名1
  4. 名称2
  5. 文件必须始终作为参数传递,目录可能与否,并且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] [name1 name2]

    但我希望'名字'论点与我之前说过的一样。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

我认为你应该使用

(`--names`, nargs=2)

这使得它们是可选的,但是如果提供的话,它需要2.它还将这两个字符串与`“resources_dir”的可选字符串分开。

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

在任何情况下都没有0 or 2 nargs,除非我在上面建议。