argparse模块 - 如何在运行时更改帮助格式?

时间:2011-07-07 20:15:47

标签: python runtime argparse

让我们说,我有一个解析器:

self.__parser = argparse.ArgumentParser(
                            prog = '<...>',
                            fromfile_prefix_chars='@')

初始化之后,我希望在运行时将argparser中的prog变量更改为其他内容,让我们说:'aaa'。

代码:

self.__parser.prog = 'aaa'

不起作用,因为argparser在ts格式化程序中缓存了这个程序。 有人知道是否有可能以简单的方式更改此属性?

1 个答案:

答案 0 :(得分:3)

我怀疑问题出在代码中的其他地方,因为下面的代码允许更改prog属性,通过调用print_help来证明:

import argparse
import sys

class MyParser():
    def __init__(self, nm=sys.argv[0]):
        self.__parser = argparse.ArgumentParser(prog=nm, fromfile_prefix_chars='@')
    def change_prog_name(self, nm):
        self.__parser.prog = nm
    def print_help(self):
        self.__parser.print_help()

my_parser = MyParser()
my_parser.print_help()
print 'after prog change:'
my_parser.change_prog_name('aaa')
my_parser.print_help()

输出:

  

用法:argparse_test.py [-h]

     

可选参数:
  -h, - help显示此帮助消息并退出

     改编后的

:   用法:aaa [-h]

     

可选参数:
  -h, - help显示此帮助消息并退出