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

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

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

Приложенията от командния ред са един от най-старите и най-използваните видове приложения. Ако сте опитен потребител на Linux, може да не сте използвали GUI инструменти вместо инструменти на командния ред, за да направите същата задача. Например, Anaconda, мениджърът на пакети за python, разполага с инструменти на командния ред на име Conda и GUI инструмент с име anaconda navigator.

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

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

В този урок ще ви представя библиотеката Argparse на python, която може да анализира аргументи на приложенията от командния ред. Това е полезно за изграждане на страхотни интерфейси на командния ред. За да следвате този урок, се препоръчва да имате инсталирана най-новата версия на python. Имаме и урок стъпка по стъпка за актуализиране на python до най-новата версия в Linux.

Въведение

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

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

ls команда в Linux

Както можете да видите на изображението, в него са изброени елементите в текущата директория. Можем да използваме и ls командвайте по-изгодно, като му дадете аргумент, както направих в следващата команда.

ls -a

След като въведете тази команда в терминала, тя ще изброи всички елементи, налични в текущата работна директория, включително скритите елементи. Както можете да видите, като предоставим аргументи на командата, ние можем лесно да посочим опции за командата по приятелски начин. Тук аргументите влизат в сила. Те правят приложенията от командния ред по-полезни и по-удобни.

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

Можем да го направим по два начина:

Първият трик е добър, но вторият е по-полезен, тъй като потребителят може да даде всички опции с една команда, което го прави по-удобен за потребителя.

Python включва страхотна библиотека, наречена „argparse“, която е полезна за създаване и анализиране на аргументи от командния ред и може да изгради много лесно мощни интерфейси на командния ред за потребителите. Нека да се потопим дълбоко в библиотеката на argparse на python.

Библиотека Argparse

The argparse библиотеката е лесен и полезен начин за анализиране на аргументи при изграждане на приложения от командния ред в python. Въпреки че има и други аргументи, анализиране на библиотеки като optparse, getopt, и т.н., на argparse библиотеката е официално препоръчителният начин за анализиране на аргументи от командния ред.

Той е наличен и в стандартната библиотека на python, така че не се нуждаем от ръчна конфигурация. The argparse библиотеката е изградена с помощта на optparse библиотека на python, но argparse е по-полезен и удобен за разработчици от optparse библиотека.

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

Нека видим практическа демонстрация за това как да използваме библиотеката argparse за създаване на прост интерфейс на командния ред. Тази програма ще приеме път и ще провери дали пътят съществува или не и ако съществува, след това отпечата дали е файл или директория.

import os import argparse parser = argparse.ArgumentParser ('description = "Проверка на съществуването на пътя") парсер.add_argument ("- път", помощ = "въведете път, за да проверите дали съществува") args = парсер.parse_args () input_path = args.път, ако os.път.isdir (input_path): print ("Пътят съществува и това е директория") elif os.път.isfile (input_path): print ("Пътят съществува и това е файл") else: print ("Пътят не съществува")
При стартиране на горната програма можем да проверим дали пътят съществува или не.

демонстрация на разбор на аргументи с argparse

Можете също да използвате -з аргумент с програмата, който е аргументът по подразбиране за показване на съобщения за помощ.

argparse съобщение за помощ по подразбиране

Позволете ми да ви обясня как работи горната програма. В първите два реда импортирахме модулите, които ще са ни необходими в програмата. The операционна система модул е ​​импортиран, за да се провери дали пътят съществува или не и дали е файл или директория. Ако искате да научите повече за операционна система модул, можете да се обърнете към нашето ръководство за работа с os в python.В следващия ред импортирахме библиотеката argparse, необходима за създаване и анализиране на аргументи. В третия ред създаваме обект на парсер, използвайки клас ArgumentParser на библиотеката argparse. Този клас приема и незадължително описание на параметъра, което ще бъде показано в съобщението за помощ.В следващия ред създадохме аргумент, наречен path, използвайки метода add_argument () на обекта на синтактичния анализатор и даваме подробностите в помощния параметър, който ще бъде показан в съобщението за помощ, както видяхме в изхода по-рано.След това анализираме аргументите, като използваме метода parse_args () на обекта на парсер и имаме достъп до потребителския път за вход като аргумент. Получихме пътя, който потребителят въведе в аргумента и след това го използвахме с os модула, за да проверим дали е файл или папка. Ако не е сред двете, ще отпечата, че пътят не съществува.

Персонализиране

Нека видим някои от персонализациите, които можем да направим с нашия интерфейс на командния ред с помощта на библиотеката argparse.

Помощ за персонализирано използване

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

персонализирана помощ за използване в argparse

Както можем да видим в изхода, помощта за използването е променена на тази, която посочваме в параметъра за използване на класа ArgumentParser ().

Персонализиране на аргументи

Можем също така да използваме библиотеката Argparse, за да персонализираме аргументите, като например дали аргументите ще бъдат необходими или не, като даваме на аргумент стойност по подразбиране.

Добавяне на стойност по подразбиране

Можем да дадем на аргументите стойност по подразбиране, като използваме параметъра по подразбиране на add_argument () метод. Например вижте кода по-долу.

import os import argparse parser = argparse.ArgumentParser (описание = "Проверка на съществуването на пътя", употреба = "cla.py path ") парсер.add_argument ("- път", help = "въведете път, за да проверите дали съществува", по подразбиране = "име на файл.txt ") args = парсер.parse_args () input_path = args.път, ако input_path == Няма: изход () elif os.път.isdir (input_path): print ("Пътят съществува и това е директория") elif os.път.isfile (input_path): print ("Пътят съществува и това е файл") else: print ("Пътят не съществува")

При стартиране на горната програма без никакъв аргумент ще получим изхода по-долу. Както е показано в изхода, програмата проверява пътя име на файл.текст, което задаваме в параметъра по подразбиране.

даване на стойност по подразбиране на аргументите

Задаване на изисквания за аргументи

Също така можем да използваме библиотеката Argparse, за да зададем изискванията на аргумента, т.е.д., дали аргументите ще са необходими или не. За целта трябва да използваме необходимия параметър, както е показано в кода по-долу.

import os import argparse parser = argparse.ArgumentParser (описание = "Проверка на съществуването на пътя", употреба = "cla.py path ") парсер.add_argument ("- път", help = "въведете път, за да проверите дали съществува", по подразбиране = "име на файл.txt ", задължително = Вярно) args = парсер.parse_args () input_path = args.път, ако input_path == Няма: изход () elif os.път.isdir (input_path): print ("Пътят съществува и това е директория") elif os.път.isfile (input_path): print ("Пътят съществува и това е файл") else: print ("Пътят не съществува")

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

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

Тип аргумент

Можем също така да зададем типа данни, използван в аргумента. Например, ако се нуждаем от пътя, трябва да дадем низ тип данни. Ако потребителят въведе тип данни, който не е низ, Argparser ще го промени в низ. За да зададете типа по подразбиране за аргумент, изпълнете кода по-долу.

import os import argparse parser = argparse.ArgumentParser (описание = "Проверка на съществуването на пътя", употреба = "cla.py path ") парсер.add_argument ("- path", help = "въведете път, за да проверите дали съществува", type = str) args = parser.parse_args () input_path = args.път, ако input_path == Няма: изход () elif os.път.isdir (input_path): print ("Пътят съществува и това е директория") elif os.път.isfile (input_path): print ("Пътят съществува и това е файл") else: print ("Пътят не съществува")

Изход:

определяне на типа данни на аргументите

Заключение

Това е само основата на синтактичния анализ на аргументи с помощта на библиотеката Argparse. След като преминете през този урок, се препоръчва да прочетете официалната документация, за да проучите повече трикове за използване на тази библиотека. Може също да искате да видите публикацията за използване на регистрация в python, което е много полезно за писане на големи приложения и лесно отстраняване на грешки.

Как да променяте настройките на мишката и тъчпада с помощта на Xinput в Linux
Повечето дистрибуции на Linux се доставят с библиотека “libinput” по подразбиране за обработка на входни събития в системата. Той може да обработва вх...
Пренастройте бутоните на мишката си по различен начин за различен софтуер с X-Mouse Button Control
Може би се нуждаете от инструмент, който може да промени контрола на мишката с всяко приложение, което използвате. Ако случаят е такъв, можете да изпр...
Преглед на безжична мишка на Microsoft Sculpt Touch
Наскоро прочетох за Microsoft Sculpt Touch безжична мишка и реших да я купя. След като го използвах известно време, реших да споделя опита си с него. ...