我可以将选项从optparse传递给argparse吗?

时间:2014-06-19 06:47:06

标签: python argparse optparse

我正在包装一个通过名为options_parser的属性公开其OptionParser的类。我将这个课程包装在一个“跑步者”中,我写的是使用argparse。我使用ArgumentParser的{​​{3}}方法来解析包装器的参数,以及我传递给包装类实例的任何剩余参数。

运行./wrapper.py --help不会列出已包装类的选项。有没有方便的方法将optparse选项添加到包装器的argparse参数?

1 个答案:

答案 0 :(得分:2)

如果它仅用于显示选项,我可以想到的一种方法是使用format_help的{​​{1}}并将其放在optparse的结尾中,例如:

argparse

您当然可以根据需要设置epilog的格式,包括对两个选项列表的一些解释。你也可以试验一个不同的Formatter,虽然在这种情况下默认的一个不能正常工作,因为它会从epilog中删除换行符。如果对布局感到绝望,你也可以尝试通过继承In [303]: foo = OptionParser() In [304]: foo.add_option("-f", "--file", dest="filename",help="read data from FILENAME") In [305]: foo.add_option("-v", "--verbose",action="store_true", dest="verbose") In [311]: bar = ArgumentParser(epilog = foo.format_help(), formatter_class = RawTextHelpFormatter) In [312]: bar.add_argument('integers', metavar='N', type=int, nargs='+',help='an integer for the accumulator') In [313]: bar.add_argument('--sum', dest='accumulate', action='store_const',const=sum, default=max,help='sum the integers (default: find the max)') In [314]: bar.print_help() usage: ipython [-h] [--sum] N [N ...] positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers (default: find the max) Usage: ipython [options] Options: -h, --help show this help message and exit -f FILENAME, --file=FILENAME read data from FILENAME -v, --verbose 创建自己的格式化程序,虽然我不建议基于类文档:

argparse.HelpFormatter