Python argparse:在用法字符串中显示parse_known_args模式
当使用Python的模块时,您可以使用它只解析解析器已知的参数,并且单独返回任何附加参数 但是,这个事实在用法/帮助字符串中没有表示。当然我可以把它放在解析器的Python argparse:在用法字符串中显示parse_known_args模式,python,argparse,Python,Argparse,当使用Python的模块时,您可以使用它只解析解析器已知的参数,并且单独返回任何附加参数 但是,这个事实在用法/帮助字符串中没有表示。当然我可以把它放在解析器的description字段中,但是我想知道是否有一种很好的方法将它包含在用法行中 我要寻找的是一个输出,例如用法:test[-h]…,而不是用法:test[-h]我认为您可以结合使用和ArgumentParser属性来实现这一点。请注意,该部分将用法显示为构造函数的关键字参数,但是,检查用法表明您可以在构造后作为解析器访问它。用法 我想你
description
字段中,但是我想知道是否有一种很好的方法将它包含在用法行中
我要寻找的是一个输出,例如
用法:test[-h]…
,而不是用法:test[-h]
我认为您可以结合使用和ArgumentParser属性来实现这一点。请注意,该部分将用法显示为构造函数的关键字参数,但是,检查用法
表明您可以在构造后作为解析器访问它。用法
我想你的最终解决方案会是这样的:
parser = argparse.ArgumentParser()
# Add arguments...
usage = parser.format_usage()
parser.usage = usage.rstrip() + ' ...\n'
parse\u known\u args()
是为了方便程序员编写程序,而不是程序用户需要担心的事情。如果正确定义命令行参数,argparse
会自动提供类似的功能:
>>> import argparse
>>> p = argparse.ArgumentParser(prog='command')
>>> x=p.add_argument("foo", nargs=argparse.REMAINDER)
>>> p.parse_args(["--help"])
usage: command [-h] ...
positional arguments:
foo
optional arguments:
-h, --help show this help message and exit
谢谢,差不多完成了。用法字符串以一个
\n
结尾,因此首先需要注意:parser.usage='%s…\n'%parser.format\u usage().rstrip()
太好了,不幸的是foo[foo…]
设置它的样式对于我的情况来说相当不舒服,因为在没有引号或反斜杠的环境中,它实际上是一个可能包含空格的单个参数,也就是说,通过将最后一个参数与任何非参数合并,唯一可以包含空格的参数就是最后一个参数。啊,试试nargs=argparse.rements
。这将把所有剩余的位置参数放在一个列表中,并根据需要方便地将“…”放在帮助字符串中。