如何在使用python' s argh库时更改PARSER_FORMATTER

时间:2017-04-04 07:50:10

标签: python scope python-module argh

使用Python的Argh库我想在使用argh.dispatch_command发送函数时提供另一个PARSER_FORMATTER。

我试过了:

import argh
import argparse

argh.PARSER_FORMATTER = argparse.RawTextHelpFormatter

def myfunct(arg, param=None):
    pass # here my working code

if __name__ == '__main__':
    argh.dispatch_command(myfunct)

但是当使用--help调用时,生成的程序仍然会冲刺 默认值。所以它似乎仍然使用Argh的CustomFormatter 而不是argparse' s RawTextHelpFormatter我试图提供。

奇怪的是,当我使用set_default_command并自己提供解析器时,它可以工作:

import argh
import argparse

argh.PARSER_FORMATTER = argparse.RawTextHelpFormatter

def myfunct(arg, param=None):
    pass # here my working code

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
         formatter_class=argh.PARSER_FORMATTER)
    argh.set_default_command(parser, myfunct)
    argh.dispatch(parser)

因此问题必须与Argh中PARSER_FORMATTER内部可见性相关。如何为Argh模块本身更改argh.PARSER_FORMATTER,以便argh.dispatch_command使用它?这个应该是可能的,还是我在错误的轨道上?

0 个答案:

没有答案