📜  单击Python中的模块 |制作很棒的命令行实用程序

📅  最后修改于: 2022-05-13 01:54:57.808000             🧑  作者: Mango

单击Python中的模块 |制作很棒的命令行实用程序

自从计算机时代开始和互联网爆发之前,程序员就一直在交互式 shell 中使用命令行工具作为与计算机通信的一种手段。奇怪的是,随着 UI/UX 技术的进步,很少有人知道也可以创建漂亮的命令行界面。
是否曾经想自己创建一个实际上非常用户友好、高效且易于使用的命令行工具?好吧, click是一个Python包,它就是这样做的。我们可以使用许多Python包来代替click ,例如 argparse、docopt 等,所以我们首先看看为什么要使用click

为什么点击

为什么点击是更好的工作工具有几个原因。

  • Click 可以无限制地懒组合。
  • 它是完全嵌套的。
  • Click 为所有参数和命令提供了强大的信息,因此它可以为完整的 CLI 生成统一的帮助页面,并根据需要帮助用户转换输入数据。
  • Click 对什么是类型有深刻的理解,并且可以在出现问题时向用户提供一致的错误消息。

安装:

pip install click

命令行界面的基础知识:

根据 CLI 的类型和用途,它可以具有多种功能。您可能已经使用过 pip,它也是一个 CLI。所有 CLI 都具有的一些基本功能是:

  • 一个论据。
  • 一个选项,它是一个可选参数
  • 一个标志,这是一个启用或禁用某个函数的特殊选项。最常见的标志之一是 –help。

使用 click 的简单程序

# importing click
import click
  
@click.command()
def main():
    click.echo("This cli is built with click. ")
  
if __name__=="__main__":
    main()

因此,让我们构建一个命令行工具,该工具将为参数中提供的名称打印问候语。

参数解析: Click使用Python装饰器来解析与函数。

@click.command()
@click.argument('name')
def greeting(name):
    click.echo("Hello, {}".format(name))
  
if __name__=="__main__":
    greeting()

>>> python greet.py Gifoyle

Hello, Gilfoyle


可选参数:单击提供了以标志形式包含可选参数的选项。

import click
  
@click.command()
@click.option('--string', default ='World',
        help ='This is a greeting')
def hello(string):
    click.echo("Hello, {}".format(string))
  
if __name__=="__main__":
hello()    

>>> python hello.py

Hello, World

>>> python hello.py --string Dinesh

Hello, Dinesh


帮助:制作完美 CLI 的最重要也是最后一步是为我们的代码提供文档。当使用可选参数--help时,Click 在命令行中提供了一个漂亮且格式化的帮助文本。它使用函数中指定的文档字符串。

import click
  
@click.command()
@click.argument(‘greeting’)
def cli(greeting):
    '''
    This is the default CLI method.
      
    Arguments:
            greeting: {string}
    '''
  
    click.echo(greeting)
    click.echo ("This is a simple cli.")
  
if __name__=="__main":
    cli()

>>> python cli.py --help
这是默认的 CLI 方法。

Arguments:
greeting: {string}

Options:
  --string TEXT  Hello
  --help         Show this message and exit.
>>>


错误处理:错误处理是 CLI 的重要组成部分。你的脚本如何处理和管理错误很重要,也可以帮助用户更好地理解错误。

>>> python cli.py
这是一个简单的 cli。

>>> python cli.py hello

Usage: greet.py [OPTIONS]
Try "greet.py --help" for help.

Error: Got unexpected extra argument (hello)