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

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

3 ответа

Решение

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

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

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

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

Другие вопросы по тегам