python - 来自 argparse 的自动使用字符串(带有 nargs='*' 和带有可选复数“(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
推荐阅读
- cypress - 是否可以将赛普拉斯配置为以全屏模式启动?
- flutter - 颤振中未定义的名称“导航器”
- flutter - 如何在 Flutter 中向 TabBar 动态添加选项卡?
- amazon-web-services - 为什么 AppSync 解析器响应模板在调试显示结果时返回 null?
- javascript - 如何使用 Google App Scripts 从数据透视表中将明细表附加为 pdf 或 excel?
- javascript - 如何根据动态键制作Javascript过滤器值
- multithreading - 在应用程序中有两个 QThreadPool
- typescript - 如何删除 TypeScript 或 Flow 中未定义的继承类型的联合类型细化
- html - Font Awesome 图标与 Bulma 菜单中的文本不对齐
- keyboard-shortcuts - Atom 编辑器中的快捷方式移动到 Mac 中的上一个屏幕