10

是否可以在 optparse 中强制选择一个选项?

4

3 回答 3

20

我之前发表了评论,但鉴于许多其他答案说No, not possible,这里是如何做到这一点:

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')

这使得-fas 是强制性的。

Usingargparse确实是一种替代方法,但这并不意味着您也不能这样做optparse

于 2011-01-04T11:18:35.057 回答
8

选项按定义是可选的 :-) 如果您需要强制执行某些操作,请使用argparse并设置位置参数。

http://docs.python.org/dev/library/argparse.html

于 2011-01-04T11:09:43.217 回答
2

不,你不能。您可以使用argparseand 或者通过使用 optparse 模块获取选项值并显式检查选项值是否已定义(如在 optparse 中将其设置为默认值,如 None 并检查 not None),如果未定义,请调用sys.exit()要求用户提供该选项。

于 2011-01-04T11:14:28.963 回答