单击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)