在寻找更快的方法来解析脚本中的命令行参数时,我遇到了argh library。在
我真的很喜欢argh的特性,但是我遇到了一个阻碍我使用它的缺点,这与我调用-help选项时显示的默认帮助消息有关: 默认情况下,函数的docstring显示在参数列表的顶部。这很好,但是初始格式丢失了。例如,请参见下面的示例脚本
import argh
def func(foo=1, bar=True):
"""Sample function.
Parameters:
foo: float
An example argument.
bar: bool
Another argument.
"""
print foo, bar
argh.dispatch_command(func, argv=['-h'])
这将导致以下输出
^{pr2}$有没有一种(简单)方法可以得到如下输出?在
usage: script.py [-h] [-f FOO] [-b]
Sample function.
Parameters:
foo: float
An example argument.
bar: bool
Another argument.
optional arguments:
-h, --help show this help message and exit
-f FOO, --foo FOO
-b, --bar
我不希望使用注释来定义参数帮助消息,因为这将要求我在每次需要更改某些内容时同时更改函数的docstring和帮助文本。在
感谢您对Argh图书馆的兴趣。这里讨论的解决方案将被纳入下一个版本(argh≥0.25)。另请参见issue #64(已修复)。在
我不熟悉}的包装器。我的猜测是,它将您的函数
argh
,但显然它是{__doc__
,并使其成为解析器的description
,例如{a1}
^{pr2}$argparse
有一个RawDescriptionHelpFormatter
,按原样显示描述。在所以问题是,有没有办法让
argh
使用这个格式化程序?在此
argparse
脚本生成所需的帮助:在
argh/dispatching.py
所以你可以设置:
或者编写自己的函数:
在@hpaulj的帮助下,我终于获得了想要的行为。为了便于实现这一点,我定义了一个类似于啊。啊,目标是不必为每个参数分别编写
@argh.arg(‘—param’, help=“%(default)s”)
,而是在我的函数上只使用一个@arg_custom()
修饰符:这里的关键点是
^{pr2}$for
循环负责确保所有参数都得到相应的help=“%(default)s”
选项。 同时更改argh/constants.py
中的相应行我们现在可以方便地使用
终于屈服了
使用
-h
选项执行脚本时。在相关问题 更多 >
编程相关推荐