Таня Шлюссер - Автостопом по Python
- Название:Автостопом по Python
- Автор:
- Жанр:
- Издательство:Питер
- Год:2017
- Город:СПб.
- ISBN:978-5-496-03023-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Таня Шлюссер - Автостопом по Python краткое содержание
и содержит наработки многочисленных профессионалов и энтузиастов, знающих, что такое Python, и чего вы от него хотите. Проверенные методы и новейшие приемы, собранные в этой книге, помогут вам стать профессиональным Python-программистом и во всеоружии встретить наступающую эпоху Python 3.
Автостопом по Python - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
····parser.add_argument('-a','-all', help='display the full text
························of the answer',
························action='store_true')
····parser.add_argument('-l','-link', help='display only the answer link',
························action='store_true')
····parser.add_argument('-c', '-color', help='enable colorized output',
························action='store_true')
····parser.add_argument('-n','-num-answers', help='number of answers
························to return',
························default=1, type=int)
····parser.add_argument('-C','-clear-cache', help='clear the cache',
························action='store_true')
····parser.add_argument('-v','-version',
························help='displays the current version of howdoi',
························action='store_true')
····return parser
Анализатор проверит командную строку и создаст словарь, в котором соотносятся все аргументы и значения. Конструкция action='store_true' показывает, что параметр является флагом. При наличии в командной строке он будет сохранен как True в словаре анализатора.
docopt
Основной принцип docopt ( http://docopt.org/) заключается в том, что документация должна быть красивой и понятной. Библиотека предоставляет одну основную команду docopt.docopt(), а также несколько функций и классов для удобства продвинутых пользователей. Функция docopt.docopt() принимает инструкции в стиле POSIX, написанные разработчиком, использует их для интерпретации аргументов командной строки и возвращает словарь со всеми аргументами и параметрами, полученными из командной строки. Также она корректно обрабатывает параметры — help и — version.
В следующем примере значение переменной arguments — это словарь, который имеет ключ name, — capitalize и — num_repetitions:
#!/usr/bin env python3
"""Здоровается с вами.
··Использование:
····hello … [options]
····hello — h | — help | — version
····-c, — capitalize писать ли имя с большой буквы
····-n REPS, — num_repetitions=REPS количество повторений [по умолчанию: 1]
"""
__version__ = "1.0.0" # Необходимо для параметра — version
def hello(name, repetitions=1):
····for rep in range(repetitions):
········print('Hello {}'.format(name))
if __name__ == "__main__":
····from docopt import docopt
····arguments = docopt(__doc__, version=__version__)
····name = ' '.join(arguments[''])
····repetitions = arguments['-num_repetitions']
····if arguments['-capitalize']:
········name = name.upper()
····hello(name, repetitions=repetitions)
Начиная с версии 0.6.0 docopt может использоваться для создания сложных программ с субкомандами, которые ведут себя как команды git ( https://git-scm.com/) или svn ( https://subversion.apache.org/) (даже если субкоманды написаны на разных языках). Существует полный пример приложения ( https://github.com/docopt/docopt/tree/master/examples/git), имитирующий реализацию команды git, который показывает, как это возможно.
Plac
Философия Plac ( https://pypi.python.org/pypi/plac) заключается в том, что вся информация, необходимая для анализа вызова команды, находится в сигнатуре целевой функции. Библиотека легковесна (примерно 200 строк), оборачивает argparse ( http://docs.python.org/2/library/argparse.html) из стандартной библиотеки и предоставляет одну основную команду plac.plac(), которая получает анализатор аргумента из сигнатуры функции, анализирует командную строку, а затем вызывает функцию.
Библиотека должна была называться анализатором аргументов командной строки (Command-Line Argument Parser, clap), имя оказалось занято, поэтому она называется Plac — clap, почти наоборот. Руководство по использованию не особо информативно, но посмотрите, как мало строк в этом примере:
# hello.py
def hello(name, capitalize=False, repetitions=1):
··"""Здоровается с вами."""
····if capitalize:
········name = name.upper()
····for rep in range(repetitions):
········print('Hello {}'.format(name))
if __name__ == "__main__":
····import plac
····plac.call(hello)
Руководство по использованию выглядит так:
$ python hello.py — help
usage: hello.py [-h] name [capitalize] [repetitions]
Says hello to you.
positional arguments:
··name
··capitalize [False]
···repetitions [1]
optional arguments:
··-h, — help show this help message and exit
Если хотите выполнить преобразование типов для какого-нибудь аргумента до того, как передадите его в функцию, используйте декоратор annotations:
import plac
@plac.annotations(
····name = plac.Annotation("the name to greet", type=str),
····capitalize = plac.Annotation("use allcaps", kind="flag", type=bool),
····repetitions = plac.Annotation("total repetitions", kind="option",
··················type=int)
def hello(name, capitalize=False, repetitions=1):
··"""Здоровается с вами."""
····if capitalize:
········name = name.upper()
····for rep in range(repetitions):
········print('Hello {}'.format(name))
Помимо этого, декоратор plac.Interpreter предоставляет легковесный способ создать очень быстрое интерактивное приложение для командной строки. Примеры содержатся в документации к интерактивному режиму plac по адресу https://github.com/kennethreitz-archive/plac/blob/master/doc/plac_adv.txt.
Click
Основное предназначение Click ( http://click.pocoo.org/) (расшифровывается как Command Line-Interface Creation Kit — набор для создания интерфейсов командной строки) — помочь разработчикам создать компонуемые интерфейсы командной строки, написав минимально возможное количество кода. Документация к Click подтверждает ее связь с docopt.
Функция Click — создавать компонуемые системы, функция docopt — вручную создавать самые красивые интерфейсы командной строки. Эти две цели конфликтуют друг с другом. Click мешает пользователям реализовывать некоторые шаблоны для того, чтобы сделать интерфейсы командной строки уникальными. Например, вы практически не можете переформатировать вспомогательные страницы.
Стандарты этой библиотеки способны удовлетворить почти все запросы разработчиков, но продвинутые пользователи могут изменить их. Как и в случае с Plac, она задействует декораторы, чтобы привязать определения анализатора к функциям, которые будут их использовать, переместив из самих функций управление аргументами командной строки.
Приложение hello.py при использовании Click выглядит так:
import click
@click.command()
@click.argument('name', type=str)
@click.option('-capitalize', is_flag=True)
@click.option('-repetitions', default=1,
··············help="Times to repeat the greeting.")
def hello(name, capitalize, repetitions):
····"""Здоровается, with capitalization и именем."""
····if capitalize:
········name = name.upper()
····for rep in range(repetitions):
········print('Hello {}'.format(name))
if __name__ == '__main__':
····hello()
Click анализирует описание из строк документации команды и создает вспомогательное сообщение с помощью пользовательского анализатора, унаследованного от устаревшего члена стандартной библиотеки optparse, который более совместим со стандартами POSIX, чем argparse [82] docopt не использует ни optparse, ни argparse и для анализа строк документации применяет регулярные выражения.
.
Интервал:
Закладка: