2016-10-07 32 views
4

是否有方法可以訪問幫助字符串以查找參數解析器庫對象的特定參數?如何僅打印ArgParse特定參數的幫助字符串的內容

如果選項存在於命令行上,我想打印幫助字符串內容。 不是 Argument Parser可以通過ArgumentParser.print_help顯示的完整幫助文本。

所以類似的規定:

parser = argparse.ArgumentParser() 

parser.add_argument("-d", "--do_x", help='the program will do X') 

if do_x: 
    print(parser.<WHAT DO I HAVE TO PUT HERE?>('do_x') 

這是所需的行爲

$程序-d

程序會做X

+0

所以,你只是想讓它打印出''程序會做X'每當參數'-d'被解析?或者是什麼? –

回答

3

parser._option_string_actions它是選項字符串之間的映射( -d--do_x)和Action objectsAction.help屬性包含幫助字符串。

import argparse 

parser = argparse.ArgumentParser() 
parser.add_argument("-d", "--do_x", action='store_true', 
        help='the program will do X') 
args = parser.parse_args() 
if args.do_x: 
    print(parser._option_string_actions['--do_x'].help) 
    # OR print(parser._option_string_actions['-d'].help) 
2

parser._actionsAction對象的列表。您也可以在創建解析器時抓取對象。

a=parser.add_argument(...) 
... 

If args.do_x: 
     print a.help 

在交互式會話中與​​一起玩。從這樣的作業看a

+0

感謝您的回覆,@falsetru中的人對我來說似乎更直接,但我想這只是我的風格 – Diego

+1

有些人不喜歡使用'._'屬性。但他們也抱怨說'a = parser ...'也沒有記錄。 – hpaulj

+0

我同意,最好將它作爲函數在API中使用。 parser._option_string_actions [' - do_x']。幫助看起來更加自明,我們不需要創建額外的變量。然而,硬編碼的文本字符串總是很脆弱(+國際化!)。所以另一方面,a = parser ...方法可能更加健壯。 – Diego

相關問題