作为中提到的文档中optparse.OptionParser
使用的IndentedHelpFormatter
输出格式选项的帮助,对此,我发现了一些API文档.
我想在使用文本中显示所需的位置参数的类似格式的帮助文本.是否有适配器或简单的使用模式可用于类似的位置参数格式化?
优选仅使用stdlib.Optparse确实很棒,除了这个格式细微差别,我觉得我们应该能够修复而不导入整个其他包.:-)
最好的办法是给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.文档说它支持位置参数和更好看的帮助消息.