2011-07-07 42 views
2

比方說,我有一個解析器:argparse模塊 - 如何在運行時更改幫助格式?

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

後,它被初始化我想在運行時argparser改變PROG變量別的東西,讓說:「AAA」。

代碼:

self.__parser.prog = 'aaa' 

不起作用,因爲argparser緩存此前衛somwhere內TS格式化。 有人知道是否有可能以簡單的方式更改此屬性?

回答

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變更後:
用法:444 [-h]

可選參數:
    -h,--help顯示此幫助信息並退出

相關問題