| Основы использования потока стандартного ввода |
|
Самый простой путь к созданию инструментов командной строки опирается на знание того факта, что модуль sys позволяет обрабатывать аргументы командной строки посредством атрибута sys.argv. В примере 13.1 демонстрируется самый простой инструмент командной строки, какой только возможен:
Эти две строки программного кода возвращают на стандартный вывод все, что вводится в командной строке:
и
вернет на стандартный вывод
и
вернет на стандартный вывод
Пример 13.1. sysargv. py Добавим немного конкретики и слегка изменим программный код так, чтобы он подсчитывал количество аргументов командной строки, как показано в примере 13.2. Пример 13.2. sysargv.py
Вы могли бы подумать: «Как все просто, теперь мне осталось лишь получить параметры командной строки по их индексам из списка sys.argv и написать некоторую логику их обработки». В общем вы правы, это довольно просто реализовать. Давайте добавим некоторые особенности к нашему приложению командной строки. Последнее, что мы могли бы сделать, - это вывести сообщение об ошибке в поток стандартного вывода сообщений об ошибках в случае отсутствия аргументов командной строки, как показано в примере 13.3. Пример 13.3. sysargv-step2.py
Использование sys.argv при создании инструментов командной строки зачастую является неправильным выбором, несмотря на всю его простоту. В стандартной библиотеке языка Python имеется модуль opt-parse, который берет на себя решение одной из самых неудобных задач в создании качественного инструмента командной строки. Даже для самых крошечных «разовых» инструментов лучше использовать opt-parse, чем sys.argv, так как у «разовых» инструментов есть свойство со временем превращаться в нормальные рабочие инструменты. В следующем разделе мы объясним, почему лучше использовать модуль opt-parse, но суть ответа заключается в том, что наличие хорошего модуля разбора аргументов позволит разрешить самые необычные ситуации.
Set as favorite
Bookmark
Email This
Hits: 157 Комментарии (0)RSS feed CommentsНаписать комментарий |