argparse python 一个变量中的两个可选项
argparse python two optionals in one variable
我有一个包含以下参数的程序:
- 文件
- 目录
- 名字 1
- 名字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个字符串会被分配给file
、dir
; 3 到文件,目录,1 到名称等。换句话说,它不能通过内容来判断一个可选字符串是属于 dir
还是属于 names
。它严格按照位置进行。
无论如何都没有 0 or 2 nargs
,除非我在上面建议。
我有一个包含以下参数的程序:
- 文件
- 目录
- 名字 1
- 名字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个字符串会被分配给file
、dir
; 3 到文件,目录,1 到名称等。换句话说,它不能通过内容来判断一个可选字符串是属于 dir
还是属于 names
。它严格按照位置进行。
无论如何都没有 0 or 2 nargs
,除非我在上面建议。