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

2 投票
1 回答
794 浏览
提问于 2025-04-16 21:03

假设我有一个解析器:

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 显示这个帮助信息并退出

撰写回答