Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python argparse:在用法字符串中显示parse_known_args模式_Python_Argparse - Fatal编程技术网

Python argparse:在用法字符串中显示parse_known_args模式

Python argparse:在用法字符串中显示parse_known_args模式,python,argparse,Python,Argparse,当使用Python的模块时,您可以使用它只解析解析器已知的参数,并且单独返回任何附加参数 但是,这个事实在用法/帮助字符串中没有表示。当然我可以把它放在解析器的description字段中,但是我想知道是否有一种很好的方法将它包含在用法行中 我要寻找的是一个输出,例如用法:test[-h]…,而不是用法:test[-h]我认为您可以结合使用和ArgumentParser属性来实现这一点。请注意,该部分将用法显示为构造函数的关键字参数,但是,检查用法表明您可以在构造后作为解析器访问它。用法 我想你

当使用Python的模块时,您可以使用它只解析解析器已知的参数,并且单独返回任何附加参数

但是,这个事实在用法/帮助字符串中没有表示。当然我可以把它放在解析器的
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
。这将把所有剩余的位置参数放在一个列表中,并根据需要方便地将“…”放在帮助字符串中。