2

私はパーサーを持っているとしましょう:

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

初期化後、実行時に argparser の prog 変数を別のものに変更したいと思います。たとえば、「aaa」としましょう。

コード:

self.__parser.prog = 'aaa'

argparser はこのプログラムを ts フォーマッタ内のどこかにキャッシュするため、機能しません。このプロパティを簡単な方法で変更できるかどうか誰かが知っていますか?

4

1 に答える 1

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

出力:

使用法: argparse_test.py [-h]

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

プログラム変更後:
使用法: aaa [-h]

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

于 2011-07-07T21:36:07.467 に答える