2016-10-07 29 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

相关问题