我有一个包含以下参数的程序:
文件必须始终作为参数传递,目录可能与否,并且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]
但我希望'名字'论点与我之前说过的一样。我怎样才能做到这一点?
答案 0 :(得分:1)
我认为你应该使用
(`--names`, nargs=2)
这使得它们是可选的,但是如果提供的话,它需要2.它还将这两个字符串与`“resources_dir”的可选字符串分开。
您可以使用nargs='*'
,允许0,1或更多。但是2个字符串将分配给file
,dir
; 3,文件,目录和一个名称等。换句话说,它无法通过内容告诉可选字符串是属于dir
还是属于names
。它严格按位置进行。
在任何情况下都没有0 or 2 nargs
,除非我在上面建议。