Можно ли сделать опцию в optparse обязательной? - PullRequest
10 голосов
/ 04 января 2011

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

Ответы [ 3 ]

20 голосов
/ 04 января 2011

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

8 голосов
/ 04 января 2011
Опция

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

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

2 голосов
/ 04 января 2011

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

...