iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python命令行库click的具体使用
  • 226
分享到

Python命令行库click的具体使用

2024-04-02 19:04:59 226人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、前言二、介绍三、快速开始四、小结一、前言 今天要介绍的 click 则是用一种你很熟知的方式来玩转命令行。命令行程序本质上是定义参数和处理参数,而处理参数的逻辑一定是与所定义

一、前言

今天要介绍的 click 则是用一种你很熟知的方式来玩转命令行。命令行程序本质上是定义参数和处理参数,而处理参数的逻辑一定是与所定义的参数有关联的。那可不可以用函数和装饰器来实现处理参数逻辑与定义参数的关联呢?而 click 正好就是以这种方式来使用的。

本系列文章默认使用 python 3 作为解释器进行讲解。
若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~

二、介绍

click 是一个以尽可能少的代码、以组合的方式创建优美的命令行程序的 Python 包。它有很高的可配置性,同时也能开箱即用。

它旨在让编写命令行工具的过程既快速又有趣,还能防止由于无法实现预期的 CLI api 所产生挫败感。它有如下三个特点:

  • 任意嵌套命令
  • 自动生成帮助
  • 支持运行时延迟加载子命令

三、快速开始

3.1 业务逻辑

首先定义业务逻辑,是不是感觉到有些难以置信呢?

不论是 argparse 还是 docopt,业务逻辑都是被放在最后一步,但 click 却是放在第一步。细想想 click 的这种方式才更符合人的思维吧?不论用什么命令行框架,我们最终关心的就是实现业务逻辑,其它的能省则省。

我们以官方示例为例,来介绍 click 的用法和哲学。假设命令行程序的输入是 name 和 count,功能是打印指定次数的名字。

那么在 hello.py 中,很容易写出如下代码:

def hello(count, name):
    """Simple program that greets NAME for a total of COUNT times."""
    for x in range(count):
        click.echo('Hello %s!' % name)

这段代码的逻辑很简单,就是循环 count 次,使用 click.echo 打印 name。其中,click.echo 和 print 的作用相似,但功能更加强大,能处理好 Unicode 和 二进制数据的情况。

3.2 定义参数

很显然,我们需要针对 count 和 name 来定义它们所对应的参数信息。

  • count 对应为命令行选项 --count,类型为数字,我们希望在不提供参数时,其默认值是 1

  • name 对应为命令行选项 --name,类型为字符串,我们希望在不提供参数时,能给人提示
    使用 click,就可以写成下面这样:

    from click import click
    
    @click.command() @click.option('--count', default=1, help='Number of greetings.') 
    ​​​​​​​@click.option('--name', prompt='Your name', help='The person to greet.') def hello(count, name): ...

在上面的示例中:

  • 使用装饰器的方式,即定义了参数,又将之与处理逻辑绑定,这真是优雅。和 argparse、docopt 比起来,就少了一步绑定过程
  • 使用 click.command 表示 hello 是对命令的处理
  • 使用 click.option 来定义参数选项
  • 对于 --count 来说,使用 default 来指定默认值。而由于默认值是数字,进而暗示 --count 选项的类型为数字
  • 对于 --name 来说,使用 prompt 来指定未输入该选项时的提示语
  • 使用 help 来指定帮助信息

不论是装饰器的方式、还是各种默认行为,click 都是像它的介绍所说的那样,让人尽可能少地编写代码,让整个过程变得快速而有趣。

3.3 代码梳理

使用 click 的方式非常简单,我们将上文的代码汇总下,以有一个更清晰的认识:

# hello.py
import click

@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
              help='The person to greet.')
def hello(count, name):
    """Simple program that greets NAME for a total of COUNT times."""
    for x in range(count):
        click.echo('Hello %s!' % name)

if __name__ == '__main__':
    hello()

若我们指定次数和名字:

$ python3 hello.py --count 2 --name Eric
Hello Eric!
Hello Eric!

若我们什么都不指定,则会提示输入名字,并默认输出一次:

$ python3 hello.py
Your name: Eric
Hello Eric!

我们还可以通过 --help 参数查看自动生成的帮助信息:

Usage: hello.py [OPTIONS]

  Simple program that greets NAME for a total of COUNT times.

Options:
  --count INTEGER  Number of greetings.
  --name TEXT      The person to greet.
  --help           Show this message and exit.

四、小结

click 的思路非常简单,定义处理函数,通过它的装饰器来定义参数。使用装饰器的绝妙之处就在于把定义和绑定这两个步骤合为一个步骤,使得整个过程变得如丝般顺滑。

click 除了以 Pythonic 的方式让命令行程序的实现变得更加优雅和好用外,还提供了比 argparse 和 docopt 都要强大的功能。

到此这篇关于Python命令行库click的具体使用的文章就介绍到这了,更多相关Python命令行库click内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python命令行库click的具体使用

本文链接: https://www.lsjlt.com/news/118978.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python命令行库click的具体使用
    目录一、前言二、介绍三、快速开始四、小结一、前言 今天要介绍的 click 则是用一种你很熟知的方式来玩转命令行。命令行程序本质上是定义参数和处理参数,而处理参数的逻辑一定是与所定义...
    99+
    2022-11-11
  • Python click——命令行工具
    我们的游戏资源处理工具是python实现的,功能包括csv解析,UI材质处理,动画资源解析、批处理,Androd&iOS自动打包等功能。 该项目是由其他部门继承过来的,由于绝大部分代码不符合我们的业务需求,所以进行了大重构。 删除...
    99+
    2023-01-31
    命令行 工具 Python
  • Python 中如何使用click命令行库:
    Python 中如何使用click命令行库:,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。click是一个以尽可能少的代码、以组合的方式创建优美的命令行程序的 ...
    99+
    2023-06-16
  • Python中强大的命令行库click入门教程
    前言 我们的游戏资源处理工具是Python实现的,功能包括csv解析,UI材质处理,动画资源解析、批处理,Androd&iOS自动打包等功能。该项目是由其他部门继承过来的,由于绝大部分代码不符合我们的业务需...
    99+
    2022-06-04
    命令行 入门教程 强大
  • Rediskeys命令的具体使用
    keys命令: DEL KEY:该命令用于在key存在时删除key DUMP KEY:序列化给定key,并返回被序列化的值 序列化:把对象转化为可传输的字节的序列过程称为序列化 ...
    99+
    2022-11-13
  • dockersearch命令的具体使用
    目录一、docker search 命令选项二、docker search 使用实例2.1 通过指定镜像名搜索2.2 搜索结果不进行截断显示2.3 设置搜索结果只显示10个2.4 搜...
    99+
    2023-02-13
    docker search命令 docker search
  • Linux dirname命令的具体使用
    01. 命令概述 dirname - 从文件名剥离非目录的后缀 dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到...
    99+
    2022-06-04
    Linux dirname命令 Linux dirname
  • Linux gcc命令的具体使用
    01. 命令概述 gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。 gcc是GNU编译器套件(GNU Compiler Collectio...
    99+
    2022-06-04
    Linux gcc命令 Linux gcc
  • Linux man命令的具体使用
    01. 命令概述 linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。 同时也可以使用man man 查看man的使用方法。 02. 命令格式 man [-adfhktwW]...
    99+
    2022-06-04
    Linux man命令 Linux man
  • Linux which命令的具体使用
    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置。 whereis 查看文件的位置。 locate 配合数据库查看文件位置。...
    99+
    2022-06-04
    Linux which命令 Linux which
  • Java的jmap命令的具体使用
    目录jmap命令简介jmap命令参数-heap-histo[:live]-clstats-finalizerinfo-dump:[live,]format=b,file=-F-h 和...
    99+
    2022-11-13
  • shell命令之mv的具体使用
    目录文件间的移动文件到目录的移动目录到目录的移动思考操作系统为 macOS 10.12.4 shell 的 mv 命令为移动(moving)的意思,实际可分为文件间的移动,文件到目录的移动,目录到目录的移动。 mv参数设...
    99+
    2022-06-05
    shell命令mv
  • GoLang之gobuild命令的具体使用
    目录1.go build命令2.手动案例2.1新建文件2.2配置2.3go mod init2.4go get -u github.com/jinzhu/configor2.5go ...
    99+
    2022-11-11
  • shellsleep睡眠命令的具体使用
    目录1. 背景2. 简介3. 语法4. 与 wait 区别5. 实例5.1 设置警报5.2 终端中的延迟命令5.3 变量分配给 sleep5.4 定义检查间隔5.5 为操作完成留出时...
    99+
    2023-01-12
    shell sleep命令 shell sleep睡眠命令
  • shellwait等待命令的具体使用
    目录1. 简介2. 语法3. 示例3.1 等待命令3.2 单进程等待3.3 单进程 bash 等待3.4 多个进程等待3.5 多个进程 bash 等待 PID1. 简介 bash w...
    99+
    2023-01-12
    shell wait
  • Linux的iptstate命令具体使用方法
    这篇文章主要介绍“Linux的iptstate命令具体使用方法”,在日常操作中,相信很多人在Linux的iptstate命令具体使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux的iptstat...
    99+
    2023-06-28
  • 批处理copy命令的具体使用
    目录示例单个文件的复制批量复制文件合并文件没有后缀的文件怎么复制?本文的命令说明来自与DOS命令帮助说明,如果与DOS命令帮助说明不同,请以DOS命令帮助说明为准。 语法 copy[...
    99+
    2022-11-13
  • shell wait等待命令的具体使用
    目录1. 简介2. 语法3. 示例3.1 等待命令3.2 单进程等待3.3 单进程 bash 等待3.4 多个进程等待3.5 多个进程 bash 等待 PID1. 简介 bash wait 命令是一个 Shell 命令,...
    99+
    2023-01-12
    shellwait
  • shell sleep睡眠命令的具体使用
    目录1. 背景2. 简介3. 语法4. 与 wait 区别5. 实例5.1 设置警报5.2 终端中的延迟命令5.3 变量分配给 sleep5.4 定义检查间隔5.5 为操作完成留出时间5.6 预测延迟1. 背景 当用户在...
    99+
    2023-01-12
    shellsleep命令 shellsleep睡眠命令
  • Python利用装饰器click处理解析命令行参数
    目录简介基本形式历史攻略之前的案例改造成click装饰简介 在Python开发和测试过程中主要有两种模式可以选择:脚本模式、命令行模式。在代码的开发和调试过程中使用脚本模式很方便,目...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作