是否可以使optparse中的选项成为必需选项?
我之前发表了一条评论,但鉴于许多其他答案都说“不可能”,这里是如何做到的:
parser = OptionParser(usage='usage: %prog [options] arguments')
parser.add_option('-f', '--file',
dest='filename',
help='foo help')
(options, args) = parser.parse_args()
if options.filename is None: # if filename is not given
parser.error('Filename not given')
这使得-f
成为必须的参数。
确实,使用argparse
是一种替代方案,但这并不意味着你不能在optparse
中也这样做。
optparse
没有任何作用,这只是一种使选项变为必需的方法。 - user225312选项本质上是可选的 :-) 如果你需要强制要求某个选项,可以使用 argparse
并设置一个位置参数。
argparse
或者使用 optparse 模块获取选项值,并显式地检查选项值是否已定义(例如,在 optparse 中将其设置为某个默认值,如 None,并检查其是否不为 None),如果未定义,则调用 sys.exit()
要求用户提供该选项。
optparse
文档,其中已经清楚地说明了这一点。 - gruszczyargparse
允许必需选项呢?引用argparse
文档的说法:Optparse拒绝支持这些特性,宁愿追求纯粹而不是实用。
- user225312