2011-07-07 12 views
2

が言うことができます、私はパーサを持っている:「AAA」:何か他のものにargparserでPROG変数を変更するには、実行時に、私が欲しい初期化されargparseモジュール - 実行時にヘルプフォーマットを変更するには?

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

後、言うことができます。

コード:

self.__parser.prog = 'aaa' 

このprogは、TSフォーマッタ内somwhere argparserキャッシュするので、動作しません。 簡単にこのプロパティを変更することができるかどうか誰かが知っていますか?

答えて

3

print_helpへの呼び出しによって実証され、以下のコードは、PROG属性を変更することが許可されているような問題は、あなたのコードのどこかであるというのが私の疑いです:

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() 

出力:

用法:
    -h、このヘルプを表示する--help:[-h]

オプションの引数がargparse_test.py PROG変更後のメッセージを表示して終了


使用方法:[-h]

オプションの引数AAA:
    -h、このヘルプメッセージを表示して終了

を示し--help
関連する問題