Можно ли сделать опцию в optparse обязательной?

Возможно ли сделать опцию в optparse обязательной?

Ответ 1

Я отправил комментарий ранее, но, учитывая, что многие другие ответы говорят 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')

Это делает -f обязательным.

Использование argparse является альтернативой, но это не значит, что вы также не можете сделать это в optparse.

Ответ 2

опция - defeinition optional:-) Если вам нужно сделать что-то обязательное, используйте argparse и установите позиционный аргумент.

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

Ответ 3

Нет, вы не можете. Либо вы можете использовать argparse, либо получить значение параметра с помощью модуля optparse и явно проверить, определено ли значение optionvalue (например, в optparse установить его по умолчанию как None и проверить не None), и если это не Определите, звоните sys.exit() с просьбой предоставить эту опцию.