Optparse

Материал из PythonWiki.

Перейти к: навигация, поиск

Краткая информация

OptParse - мощный и удобный парсер командной строки. Автоматически генерирует информацию по использованию (--help).

Использование

Код с комментариями:

from optparse import OptionParser

usage = "usage: %prog [options] username"
parser = OptionParser(usage=usage)         # Если не передать параметр usage, то будет использовать строку по умолчанию

parser.add_option("-p", "--password", action="store", dest="passwd", help="User password")
parser.add_option("-d", "--dir", action="store", dest="dir", help="Homedir")

Тут первые два параметра - соответственно, длинное и короткое имя опции.

  • action - что делать с принятым значением (тут можно увидеть полный список)
  • dest - имя переменной, куда будет сохранено принятое значение
  • type - тип переменной: string, int и т.д.
  • default - значение по умолчанию. Если не задано, будет None.
  • help - сообщение, которое будет выдаваться по вызову справки
(options, args) = parser.parse_args()

Функция parse_args обрабатывает массив argv, и возвращает объект optparse.Values, содержащий все опции, и массив аргументов. К примеру, если строка вызова была "program.py -p asdf test", то элемент args[0] будет равен test, а переменная options.passwd будет равна "asdf".

Проверку на введение данных можно сделать, например, так:

try:
    name = args[0]
except IndexError:
    parser.print_help()
    print "*** Username is required"
    sys.exit()

Функция print_help выводит на экран информацию об использовании. Вывод выглядит примерно так:

usage: ftpadd.py [options] username

options:
  -h, --help            show this help message and exit
  -p PASSWD, --password=PASSWD
                        User password
  -d DIR, --dir=DIR     Homedir
  -u UID, --uid=UID     UID for user
  -g GID, --gid=GID     GID for user
  -f QFILES, --quota-files=QFILES
                        Quota files
  -s QSIZE, --quota-size=QSIZE
                        Quota size
  -c COMMENT, --comment=COMMENT
                        Commentary: name of organization, contacts
Личные инструменты