argparse模块 - 如何在运行时更改帮助格式?
假设我有一个解析器:
self.__parser = argparse.ArgumentParser(
prog = '<...>',
fromfile_prefix_chars='@')
在它初始化之后,我想在运行时把argparser里的prog变量改成别的,比如说:'aaa'。
代码:
self.__parser.prog = 'aaa'
这样做不行,因为argparser在某个地方缓存了这个prog,具体是在ts格式化器里。有谁知道有没有简单的方法可以改变这个属性吗?
1 个回答
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 显示这个帮助信息并退出在prog更改后:
用法: aaa [-h]可选参数:
-h, --help 显示这个帮助信息并退出