Typer — это библиотека для создания мощных приложений с интерфейсом командной строки самым простым способом. Его легче читать и это самый простой способ создать приложение командной строки, чем использовать стандартную библиотеку Python argparse, которую сложно использовать. Он основан на подсказках типов Python 3.6+ и построен на основе Click (Typer наследует большинство функций и преимуществ Click), который представляет собой пакет Python для создания интерфейса командной строки. Модуль также обеспечивает автоматическую справку и автоматическое завершение для всех оболочек. Кроме того, он короток для написания и прост в использовании.
- Installation
- Функция вызова типа
- Передать аргументы в модуль Python type из CLI
- Получение справочной информации в модуле typer
- Добавить аргумент
- Программа Python для использования параметров ввода и запроса пользователя с помощью [да/нет]
- Выполнение нескольких команд с использованием модуля Python typer
- Автодополнение с использованием модуля Python typer
Installation
Чтобы установить модуль Typer, вам нужно открыть терминал или командную строку и ввести следующую команду:
pip install typer
После установки модуля typer мы готовы создать простой интерфейс командной строки.
Функция вызова типа
Вот пример вызова typer для функции. Мы создадим функцию и вызовем ее в CLI. Это программа, которая будет отображать сообщение «Hello World!» в интерфейсе командной строки.
Python3
# Python program to print "Hello World!"
import
typer
# Function
def
main():
(f
"Hello World"
)
typer.run(main)
Вход:
Здесь gfg.py — это имя файла скрипта, который необходимо выполнить.
Выход:
Hello World!
Передать аргументы в модуль Python type из CLI
Давайте изменим нашу программу, чтобы передать аргумент основной функции. В следующем примере используется одно имя аргумента. При вызове функции мы передаем «World!» по имени параметра.
Python3
# Python program to print "Hello World!"
# By taking passing argument
# value as "World!" in parameter name
import
typer
# Function having parameter name
def
main(name):
(f
"Hello {name}"
)
typer.run(main)
Вход:
Вот как мы можем пройти «Мир!» по имени параметра.
$ python gfg.py World!
Выход:
Hello World!
Получение справочной информации в модуле typer
Справка по Typer используется для отображения документации скрипта Python для Typer. Он отображает аргументы, параметры, описания и т. д.
Python3
import
typer
app
=
typer.Typer()
@app
.command()
def
gfg(string:
str
=
typer.Argument(...,
help
=
"""Prints input string"""
)):
"""Prints geeksforgeeks and input string"""
(
"@geeksforgeeks"
)
(string)
app()
Вход:
Справку по Typer можно использовать, набрав —help после python [filename.py].
$ python gfg.py –help
Выход:
Здесь генерируются документация и аргументы скрипта typer Python.
Usage: gfg.py [OPTIONS] NUMBER
Prints geeksforgeeks and input string
Arguments:
STRING Prints input string [required]
Добавить аргумент
Typer поддерживает различные типы данных для параметров CLI и аргументов CLI.
Python3
# Python program to take multiple
# inputs of different datatypes and print it
import
typer
# Function with multiple parameters
def
details(display:
bool
, name:
str
, age:
int
,
marks:
float
, country:
str
=
"India"
):
(f
"Country: {country}"
)
if
display
=
=
True
:
(
"@geeksforgeeks"
)
(f
"Name: {name}"
)
(f
"Age: {age}"
)
(f
"Marks: {marks}"
)
typer.run(details)
Вход:
Здесь отображение (bool) = True, имя (str) = gfg, возраст (int) = 20, отметки (float) = 94,57 и сохранение параметра страны по умолчанию, то есть «Индия».
$ python gfg.py True gfg 20 94.57
Выход:
Country: India
Name: gfg
Age: 20
Marks: 94.57
Если вы хотите изменить значение параметра страны, вы можете ввести команду как
Вход:
$ python gfg.py True gfg 20 94.57 —country Bhutan
Выход:
Country: Bhutan
Name: gfg
Age: 20
Marks: 94.57
Программа Python для использования параметров ввода и запроса пользователя с помощью [да/нет]
Параметр Typer аналогичен аргументам, но имеет некоторые дополнительные возможности.
Python3
import
typer
app
=
typer.Typer()
@app
.command()
# You can input a default value like
# 'True' or 'False' instead of '...'
# in typer.Option() below.
def
square(name,language:
bool
=
typer.Option(
..., prompt
=
"Do You Want to print the language"
),
display:
bool
=
False
):
(
"@geeksforgeeks"
)
if
display
=
=
True
:
(name)
if
language
=
=
True
:
(
"Python 3.6+"
)
app()
Вход:
$ python gfg.py gfg –display
Выход:
Здесь display (bool) имеет значение True, когда используется —display и язык печатается, когда ввод для подсказки равен ’y’.
Do You Want to print the language [y/n]: y
@geeksforgeeks
gfg
Python 3.6+
Вход:
$ python gfg.py gfg –no-display
Выход:
Здесь display (bool) имеет значение False, когда используется —no-display и язык не печатается, когда ввод для подсказки равен ’n ’.
Do You Want to print the language [y/n]: n
Вы можете попробовать различные комбинации команд и узнать больше об этих комбинациях с помощью команды —help.
Выполнение нескольких команд с использованием модуля Python typer
До сих пор мы использовали только одну функцию во всех вышеперечисленных программах. Теперь мы увидим, как использовать несколько функций в командной строке.
Python3
# Python program to print
# square or cube of a number
import
typer
app
=
typer.Typer()
@app
.command()
def
square(number:
int
):
(number
*
number)
@app
.command()
def
cube(number:
int
):
(number
*
number
*
number)
app()
Вход:
Здесь вызывается квадратная функция и печатает квадрат 3.
$ python gfg.py square 3
Выход:
9
Вход:
Здесь вызывается функция cube(), которая печатает куб из 3.
python gfg.py cube 3
Выход:
27
Автодополнение с использованием модуля Python typer
Это создаст команду typer, которую мы сможем вызывать в нашем терминале, например python, git и т. д.
$ pip install typer-cli
И, наконец, мы можем установить дополнение для текущей оболочки, и в будущем не потребуется устанавливать его снова.
$ typer –install-completion
Теперь мы готовы использовать функцию автодополнения. Нам просто нужно использовать команду typer вместо команды python, а также добавить команду запуска после имени файла в CLI.
Вот как мы можем запустить скрипт в интерфейсе командной строки typer.
typer [filename.py] run [function]
Функция автоматически завершается, когда мы нажимаем клавишу Tab.
Примечание. Чтобы автодополнение работало, не должно быть никакого вызова app(). Если вы не удалите эту строку, она выдаст RecursionError.