开发者

argparse module - How to change help format in runtime?

开发者 https://www.devze.com 2023-03-18 15:37 出处:网络
Lets say, I\'ve got a parser: self.__parser = argparse.ArgumentParser( prog = \'<...>\', fromfile_prefix_chars=\'@\')

Lets say, I've got a parser:

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

After it is initializ开发者_如何学Goed I want in runtime to change the prog variable in argparser to something else, lets say: 'aaa'.

Code:

self.__parser.prog = 'aaa'

does NOT work, because argparser caches this prog somwhere inside ts formatters. Does somebody knows if is it possible to change this property in simple way?


It is my suspicion that the problem is somewhere else in your code, as the code below is allowed to change the prog attribute, demonstrated by the calls to 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()

Output:

usage: argparse_test.py [-h]

optional arguments:
   -h, --help show this help message and exit

after prog change:
usage: aaa [-h]

optional arguments:
   -h, --help show this help message and exit

0

精彩评论

暂无评论...
验证码 换一张
取 消