当前位置:  开发笔记 > 编程语言 > 正文

如何使用Python的optparse格式化位置参数帮助?

如何解决《如何使用Python的optparse格式化位置参数帮助?》经验,为你挑选了2个好方法。

作为中提到的文档中optparse.OptionParser使用的IndentedHelpFormatter输出格式选项的帮助,对此,我发现了一些API文档.

我想在使用文本中显示所需的位置参数的类似格式的帮助文本.是否有适配器或简单的使用模式可用于类似的位置参数格式化?

澄清

优选仅使用stdlib.Optparse确实很棒,除了这个格式细微差别,我觉得我们应该能够修复而不导入整个其他包.:-)



1> Douglas Mayl..:

最好的办法是给optparse模块写一个补丁.在此期间,您可以使用略微修改的OptionParser类来完成此操作.这并不完美,但它会得到你想要的东西.

#!/usr/bin/env python
from optparse import OptionParser, Option, IndentedHelpFormatter

class PosOptionParser(OptionParser):
    def format_help(self, formatter=None):
        class Positional(object):
            def __init__(self, args):
                self.option_groups = []
                self.option_list = args

        positional = Positional(self.positional)
        formatter = IndentedHelpFormatter()
        formatter.store_option_strings(positional)
        output = ['\n', formatter.format_heading("Positional Arguments")]
        formatter.indent()
        pos_help = [formatter.format_option(opt) for opt in self.positional]
        pos_help = [line.replace('--','') for line in pos_help]
        output += pos_help
        return OptionParser.format_help(self, formatter) + ''.join(output)

    def add_positional_argument(self, option):
        try:
            args = self.positional
        except AttributeError:
            args = []
        args.append(option)
        self.positional = args

    def set_out(self, out):
        self.out = out
def main():
    usage = "usage: %prog [options] bar baz"
    parser = PosOptionParser(usage)
    parser.add_option('-f', '--foo', dest='foo',
                      help='Enable foo')
    parser.add_positional_argument(Option('--bar', action='store_true',
                                   help='The bar positional argument'))
    parser.add_positional_argument(Option('--baz', action='store_true',
                                   help='The baz positional argument'))
    (options, args) = parser.parse_args()
    if len(args) != 2:
        parser.error("incorrect number of arguments")
    pass

if __name__ == '__main__':
    main()

你运行这个输出得到的输出:

Usage: test.py [options] bar baz

  Options:
    -h, --help         show this help message and exit
    -f FOO, --foo=FOO  Enable foo

Positional Arguments:
  bar  The bar positional argument
  baz  The baz positional argument


我建议你看一下argparse模块......它足够小,可以将它嵌入到任何项目中,并且与此代码相同,并且更多......

2> Richard Leva..:

试试看argparse.文档说它支持位置参数和更好看的帮助消息.


`argparse`在2.7标准库中
推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有