Программирование

Основы синтаксического анализа аргументов командной строки в Python

Основы синтаксического анализа аргументов командной строки в Python

Приложения командной строки - один из старейших и наиболее часто используемых типов приложений. Если вы опытный пользователь Linux, возможно, вы вряд ли использовали инструменты с графическим интерфейсом вместо инструментов командной строки для выполнения той же задачи. Например, Anaconda, менеджер пакетов для python, имеет инструменты командной строки с именем Conda и инструмент графического интерфейса с именем anaconda navigator.

Что делает приложение командной строки популярным среди разработчиков, так это то, что оно потребляет очень мало ресурсов по сравнению с его аналогом с графическим интерфейсом пользователя и обеспечивает лучшую производительность.

Python - простой и мощный язык для создания приложений командной строки. Он предоставляет множество библиотек, уже написанных многими великими программистами, что упрощает нашу задачу, поскольку нам не нужно переписывать один и тот же код.

В этом руководстве я представлю вам библиотеку Python Argparse, которая может анализировать аргументы приложений командной строки. Это полезно для создания отличных интерфейсов командной строки. Чтобы следовать этому руководству, рекомендуется установить последнюю версию python. У нас также есть пошаговое руководство по обновлению Python до последней версии в Linux.

Вступление

Анализ аргументов - важная концепция, которую мы должны использовать для создания мощных и удобных интерфейсов командной строки. Если вы ранее использовали приложения командной строки, вы могли заметить, что мы можем добавлять аргументы в приложения командной строки для настройки параметров инструмента.

Например, если вы использовали ls в Linux, которая используется для вывода списка элементов текущего рабочего каталога, возможно, вы видели что-то похожее, как показано на изображении ниже.

Команда ls в Linux

Как вы можете видеть на изображении, в нем перечислены элементы в текущем каталоге. Мы также можем использовать ls команда более выгодна, дав ей аргумент, как я сделал в следующей команде.

ls -a

Теперь, когда вы введете эту команду в терминале, она отобразит все элементы, присутствующие в текущем рабочем каталоге, включая скрытые элементы. Как видите, предоставляя аргументы в команде, мы можем легко указать параметры команды в удобной форме. Здесь в игру вступают аргументы. Они делают приложения командной строки более удобными и удобными.

Вам может быть интересно, когда и как добавлять аргументы командной строки в ваши приложения. Представьте, что вы создаете приложение, которому требуется ввод имени файла, которое приложение будет обрабатывать.

Мы можем сделать это двумя способами:

Первый трюк хорош, но второй более полезен, поскольку пользователь может указать все параметры в одной команде, что делает его более удобным для пользователя.

Python включает в себя отличную библиотеку с именем «argparse», которая полезна для создания и анализа аргументов командной строки и может очень легко создавать мощные интерфейсы командной строки для пользователей. Давайте углубимся в библиотеку argparse python.

Библиотека argparse

В argparse библиотека - это простой и полезный способ анализа аргументов при создании приложений командной строки на Python. Хотя есть и другие библиотеки разбора аргументов, например optparse, getopt, так далее., в argparse библиотека официально рекомендуется для анализа аргументов командной строки.

Он также доступен в стандартной библиотеке Python, поэтому нам не нужна ручная настройка. В argparse библиотека была построена с использованием optparse библиотека питона, но argparse более полезен и дружелюбен к разработчикам, чем optparse библиотека.

Практическая демонстрация Argparse

Давайте посмотрим на практическую демонстрацию того, как использовать библиотеку argparse для создания простого интерфейса командной строки. Эта программа примет путь и проверит, существует ли путь или нет, и, если он существует, затем распечатает, является ли это файлом или каталогом.

import os import argparse parser = argparse.Анализатор ArgumentParser ('description = "Path Existence Checker").add_argument ("- path", help = "введите путь, чтобы проверить, существует ли он") args = parser.parse_args () input_path = args.путь, если ОС.дорожка.isdir (input_path): print («Путь существует, и это каталог») elif os.дорожка.isfile (input_path): print («Путь существует, и это файл») else: print («Путь не существует»)
Запустив указанную выше программу, мы можем проверить, существует ли путь или нет.

демонстрация синтаксического анализа аргументов с помощью argparse

Вы также можете использовать -час аргумент с программой, который является аргументом по умолчанию для отображения справочных сообщений.

Справочное сообщение argparse по умолчанию

Позвольте мне объяснить вам, как работает вышеуказанная программа. В первых двух строках мы импортировали модули, которые нам понадобятся в программе. В Операционные системы модуль был импортирован, чтобы проверить, существует ли путь или нет, и это файл или каталог. Если вы хотите узнать больше о Операционные системы модуль, вы можете обратиться к нашему руководству по работе с ОС в python.В следующей строке мы импортировали библиотеку argparse, необходимую для создания и анализа аргументов. В третьей строке мы создаем объект парсера, используя класс ArgumentParser библиотеки argparse. Этот класс также принимает описание необязательного параметра, которое будет отображаться в справочном сообщении.В следующей строке мы создали аргумент с именем path, используя метод add_argument () объекта синтаксического анализатора, и предоставили подробную информацию в параметре справки, который будет отображаться в сообщении справки, как мы видели в выходных данных ранее.Затем мы анализируем аргументы с помощью метода parse_args () объекта синтаксического анализатора и получаем доступ к пути ввода пользователя в качестве аргумента. Мы получили путь, который пользователь ввел в аргумент, а затем использовали его с модулем os, чтобы проверить, является ли он файлом или папкой. Если его нет среди двух, он напечатает, что путь не существует.

Настройка

Давайте посмотрим на некоторые настройки, которые мы можем сделать с нашим интерфейсом командной строки с помощью библиотеки argparse.

Справка по индивидуальному использованию

Когда мы запускаем созданную ранее демонстрационную программу с -час параметр, мы получаем справку программы как результат, сгенерированный библиотекой argparse. Если вы заметили справочное сообщение, в верхней строке есть справка по использованию, которая показывает нам, как ее использовать.В нашей демонстрационной программе есть стандартная справка по использованию. Мы все еще можем легко настроить его, используя параметр использования при создании объекта парсера с помощью класса ArgumentParser (). Посмотрите на приведенный ниже код, который нужно изменить в нашей демонстрационной программе.
парсер = argparse.ArgumentParser (description = "Проверка существования пути", usage = "cla.ру путь ")
Вот результат:

настраиваемая справка по использованию в argparse

Как видно из выходных данных, справка по использованию была изменена на ту, которую мы указываем в параметре использования класса ArgumentParser ().

Настройка аргументов

Мы также можем использовать библиотеку Argparse для настройки аргументов, например, требуются аргументы или нет, давая аргументу значение по умолчанию.

Добавление значения по умолчанию

Мы можем дать аргументам значение по умолчанию, используя параметр по умолчанию для add_argument () метод. Например, см. Приведенный ниже код.

import os import argparse parser = argparse.ArgumentParser (description = "Проверка существования пути", usage = "cla.py path ") парсер.add_argument ("- path", help = "введите путь, чтобы проверить, существует ли он", default = "filename.txt ") args = parser.parse_args () input_path = args.путь, если input_path == None: exit () elif os.дорожка.isdir (input_path): print («Путь существует, и это каталог») elif os.дорожка.isfile (input_path): print («Путь существует, и это файл») else: print («Путь не существует»)

Запустив указанную выше программу без аргументов, мы получим следующий результат:. Как показано на выходе, программа проверяет путь имя файла.текст, который мы устанавливаем в параметре по умолчанию.

присвоение аргументам значения по умолчанию

Установка требований к аргументам

Мы также можем использовать библиотеку Argparse для установки требований аргумента, i.е., будут ли аргументы необходимы или нет. Для этого нам нужно использовать обязательный параметр, как показано в приведенном ниже коде.

import os import argparse parser = argparse.ArgumentParser (description = "Проверка существования пути", usage = "cla.py path ") парсер.add_argument ("- path", help = "введите путь, чтобы проверить, существует ли он", default = "filename.txt ", обязательно = True) args = parser.parse_args () input_path = args.путь, если input_path == None: exit () elif os.дорожка.isdir (input_path): print («Путь существует, и это каталог») elif os.дорожка.isfile (input_path): print («Путь существует, и это файл») else: print («Путь не существует»)

При запуске приведенного выше кода без каких-либо аргументов вы получите сообщение об ошибке, в котором говорится, что требуются следующие аргументы.

установление требований к аргументам

Тип аргумента

Мы также можем установить тип данных, используемый в аргументе. Например, если нам нужен путь, мы должны указать строковый тип данных. Если пользователь вводит тип данных, который не является строкой, Argparser преобразует его в строку. Чтобы установить тип аргумента по умолчанию, запустите приведенный ниже код.

import os import argparse parser = argparse.ArgumentParser (description = "Проверка существования пути", usage = "cla.py path ") парсер.add_argument ("- path", help = "введите путь, чтобы проверить, существует ли он", type = str) args = parser.parse_args () input_path = args.путь, если input_path == None: exit () elif os.дорожка.isdir (input_path): print («Путь существует, и это каталог») elif os.дорожка.isfile (input_path): print («Путь существует, и это файл») else: print («Путь не существует»)

Выход:

указание типа данных аргументов

Заключение

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

Как показать счетчик FPS в играх для Linux
Игры для Linux получили серьезный толчок, когда Valve объявила о поддержке Linux для клиента Steam и своих игр в 2012 году. С тех пор многие игры AAA ...
Как загрузить и играть в Sid Meier's Civilization VI в Linux
Введение в игру Civilization 6 - это современный подход к классической концепции, представленной в серии игр Age of Empires. Идея была довольно просто...
Как установить Doom и играть в него в Linux
Введение в Doom Серия Doom возникла в 90-х годах после выхода оригинальной Doom. Это мгновенно стал хитом, и с тех пор серия игр получила множество на...