Полезные и малоизвестные функции Argparse из коробки | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
C++ Developer. Professional
-5%
Scala-разработчик
-8%
Backend-разработчик на PHP
-9%
Алгоритмы и структуры данных
-9%
Team Lead
-6%
Архитектура и шаблоны проектирования Golang Developer. Professional
-5%
HTML/CSS
-11%
C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Java Developer. Professional Web-разработчик на Python MS SQL Server Developer Android Developer. Basic Разработчик программных роботов (RPA) на базе UiPath и PIX Microservice Architecture Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов React.js Developer Node.js Developer Интенсив «Оптимизация в Java» Супер-практикум по использованию и настройке GIT Symfony Framework Java Developer. Basic Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Инфраструктурная платформа на основе Kubernetes
-6%
Экспресс-курс «IaC Ansible»
-10%
Administrator Linux.Basic
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Administrator Linux. Professional
-6%
Экcпресс-курс «ELK»
-10%
Экспресс-курс по управлению миграциями (DBVC)
-10%
Базы данных Network engineer Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов VOIP инженер Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool"
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Полезные и малоизвестные функции Argparse из коробки

WebDev_Deep_9.07_site.png

Argparse – модуль из стандартной библиотеки для работы с аргументами командной строки. Помимо стандартной функциональности в этом модуле есть много дополнительных фишек, о которых много, кто не знает, а зря: они бывают очень полезны. Давайте рассмотрим некоторые из них.

FileType

Часто в аргументах командной строки нужно передать путь до файла, чтобы потом из него что-то считать или записать в него. Обычно это делается с помощью строкового аргумента, но есть более подходящий для этого тип данных: файловый. В аргументах он принимает аргументы, которые он автоматически прокинет в функцию open вместе с указанным путём до файла и вернёт уже результат open, файловый объект. Удобная штука: позволяет писать немного меньше кода и добавить немного семантики.

Аббревиатуры аргументов По-умолчанию парсер умеет понимать сокращённые аргументы, состоящие из первых символов полных названий. Это значит, что если у нашего скрипта есть аргумент «file_to_save_extended_xlsx_report», при вызове его можно просто назвать, например «file» или «fi». При этом, если этой аббревиатуре удовлетворяют несколько аргументов, парсер это отследит и выдаст понятное сообщение об ошибке. Это поведение можно отключить у всего парсера целиком с помощью аргумента «allow_abbrev».

Действия с аргументами

Многие использовали стандартные действия (например, «store_true»), но оказывается, эти действия можно писать свои. Очень полезно особенно в тех случаях, когда прежде, чем с аргументом можно будет работать, с ним нужно сделать какие-то дополнительные действия. Например, мы принимаем JSON в качестве одного из аргументов и хотим его сначала распарсить, а потом использовать. Это можно сделать вне парсера, а можно сделать наследника класса argparse.Action, в котором будет происходить «json.loads». В результате мы получаем ещё более модульный и семантичный код.

Дочерние парсеры

Возможно, вы уже пользовались командой «git» и знаете, что у команды «git» свои аргументы, а у «git log» свои – со своим вспомогательным текстом и так для каждой команды. С помощью argparser можно сделать и такое: для этого существует механизм подключения дочерних парсеров к основным. Таким образом, несколько парсеров объединяются в один большой, разделённый на разные команды. Если вы делаете какую-то утилиту с масштабным консольным интерфейсом, это – ваш выбор.

Вот несколько малоизвестных функций из модуля argparse. Всё это есть в документации, так что не стесняйтесь её читать!

Есть вопрос? Напишите в комментариях!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
1 комментарий
1

Кадр, скорее всего, из "Таинственной реки".

Для комментирования необходимо авторизоваться