来自 argparse 的自动用法字符串与 nargs='*' 和 metavar 与可选复数"(s)"的问题



我正在编写一个程序,它使用一个位置参数来接收"其余"参数,比如这个

import argparse
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(
'filenames',
nargs='*',
metavar="filename(s)",
)
args = parser.parse_args()

在这里,我使用了metavar参数来获得更好的帮助文本。但问题是usage字符串:

>python test_argparse_plural.py -h
usage: test_argparse_plural.py [-h] [filenames) [filename(s ...]]
positional arguments:
filename(s)
optional arguments:
-h, --help   show this help message and exit

它似乎不能很好地处理(s)部分。相反,我希望usage字符串是

test_argparse_plural.py [-h] [filename(s)]

或者

test_argparse_plural.py [-h] [filename1, filename2, ...]

有什么简单的方法可以做到这一点吗?

我遇到了同样的问题。这就是我想到的:

import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument(
'filenames',
nargs='+',
metavar='filename',
help='file(s) to process'
)
args = parser.parse_args()

这将产生以下用途:

nargs_plus_demo.py -h
usage: nargs_plus_demo.py [-h] filename [filename ...]
positional arguments:
filename    file(s) to process
optional arguments:
-h, --help  show this help message and exit

最新更新