Python超好用的命令行界面实现工具,我保证你肯定不知道…

前言

Click 是一个简洁好用的Python模块,它能用尽量少的代码实现漂亮的命令行界面。它不仅开箱即用、还能支持高度自定义的配

置。

官方文档:https://click.palletsprojects.com/en/8.0.x/

一个简单的示例如下:

import click
PYTHON插件/素材/源码加Q群:903971231####
@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(f"Hello {name}!")

if __name__ == '__main__':
    hello()

效果如下:

您可以看到此模块的强大功能。只需在相应函数中添加几个修饰符,即可创建带提示的命令行界面,相当方便。

[En]

You can see the power of this module. You only need to add a few decorators to the corresponding function to create a command line interface with a prompt, which is quite convenient.

1.准备

首先需要你的电脑安装好了Python环境,并且安装好了Python开发工具。

请选择以下任何一种方式输入命令以安装依赖项:

[En]

Please choose any of the following ways to enter the command to install dependencies:

1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

pip install click

2.基本使用

如文首所示的例子一样,@click.option 是最基本的选项,它既可以设定参数默认值,也可以设定必须传入参数:

@click.command()
@click.option('--n', default=1) # 设定了默认值
def dots(n):
    click.echo('.' * n)

@click.command()
@click.option('--n', required=True, type=int) # 设定必须传入参数值
def dots(n):
    click.echo('.' * n)

如果设置了必须传递的相关参数,则效果如下:

[En]

If you set the relevant parameters that must be passed, the effect is as follows:

当然,它还支持设定多种参数别名,比如下面的 –from 和 -f 是等效的:

@click.command()
@click.option('--from', '-f', 'from_')
@click.option('--to', '-t')
def reserved_param_name(from_, to):
    click.echo(f"from {from_} to {to}")

3.多值参数

如果你的选项需要多个参数,Click也能帮你实现这个需求。

@click.command()
@click.option('--pos', nargs=2, type=float)
def findme(pos):
    a, b = pos
    click.echo(f"{a} / {b}")

可见,通过配置nargs参数,你可以将用户传递的值存入元组,并在代码中解包这个元组拿到所有的值。

效果如下:

你还可以配置一个参数叫 multiple,这个参数可以让你接受N个值:

@click.command()
@click.option('--message', '-m', multiple=True)
def commit(message):
    click.echo(' '.join(message))

4.其他功能

你还可以使用Click来计数,这个使用非常罕见:

@click.command()
@click.option('-v', '--verbose', count=True)
def log(verbose):
    click.echo(f"Verbosity: {verbose}")

效果如下:

Python超好用的命令行界面实现工具,我保证你肯定不知道...

布尔标志

此外,Click还带有布尔标志功能,你可以直接使用 “/” 来标志参数为二选一参数,函数中直接就会拿到布尔型的变量:

import sys
python插件/源码/素材加Q群:903971231###
@click.command()
@click.option('--shout/--no-shout', default=False)
def info(shout):
    rv = sys.platform
    if shout:
        rv = rv.upper() + '!!!!111'
    click.echo(rv)

选择选项

您可以直接限制用户输入的范围:

[En]

You can directly limit the scope of user input:

@click.command()
@click.option('--hash-type',
              type=click.Choice(['MD5', 'SHA1'], case_sensitive=False))
def digest(hash_type):
    click.echo(hash_type)

提示文本

在文首提到的例子中,输出了个 “You name:” 的提示,其实是 option 中的prompt参数控制的:

@click.command()
@click.option('--name', prompt='Your name please')
def hello(name):
    click.echo(f"Hello {name}!")

最后

好了,Click的功能就介绍到这里,他还有许多高级的用法,比如动态默认值、回调函数等等,大家可以通过官方文档了解这些高

级功能的使用方法:

https://click.palletsprojects.com/en/8.0.x/options/#name-your-options

Original: https://www.cnblogs.com/1234567FENG/p/16400944.html
Author: 蚂蚁爱Python
Title: Python超好用的命令行界面实现工具,我保证你肯定不知道…

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/499263/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【毕业设计】基于大数据的招聘职业爬取与分析可视化

    文章目录 0 前言 1 课题背景 2 实现效果 3 Flask框架 4 数据爬虫 5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和…

    Python 2023年8月9日
    0112
  • FFA 2022 主会场 Keynote:Flink Towards Streaming Data Warehouse

    摘要:本文整理自 Apache Flink 中文社区发起人、阿里巴巴开源大数据平台负责人王峰(莫问),在 Flink Forward Asia 2022 主会场的分享。本篇内容主要…

    Python 2023年10月9日
    089
  • Linux系统创建可执行文件软链接

    由于创建软链接这个事情,在算法开发的日常中使用到的并不是很多,因此本文也是做一个简单的回顾。这里我们使用的案例是通过TMalign这个蛋白质打分文件,在编译好可执行文件之后,可以使…

    Python 2023年10月28日
    055
  • Linux–多线程(一)

    线程 线程的概念 线程: 线程是OS能够进行运算调度的基本单位。线程是一个进程中的一个单一执行流,通俗地说,一个程序里的一个执行路线就叫做线程。 可以知道的是,一个进程至少有一个执…

    Python 2023年10月17日
    089
  • 刨析Django—-问题汇总

    hostname, aliases, ipaddrs = gethostbyaddr(name) UnicodeDecodeError: ‘utf-8’ c…

    Python 2023年8月6日
    051
  • Django REST framework JWT

    Django REST framework JWT 在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证。我们不再使用Session认证机制,而使用Json …

    Python 2023年11月3日
    082
  • Python爬虫编程思想(161):Scrapy中的通用爬虫

    我们已经讲解的爬虫都是抓取一个或几个页面,然后分析页面中的内容,这种爬虫可以称为专用爬虫,通常是用来抓取特定页面中感兴趣的内容,例如,某个城市的天气预报信息,或特定商品的信息等。除…

    Python 2023年10月3日
    079
  • python中drop用法_Python drop方法删除列之inplace参数实例

    drop方法有一个可选参数inplace,表明可对原数组作出修改并返回一个新数组。不管参数默认为False还是设置为True,原数组的内存值是不会改变的,区别在于原数组的内容是否直…

    Python 2023年8月20日
    0103
  • 超长时间序列数据可视化的6个技巧

    时间序列是由表示时间的x轴和表示数据值的y轴组成,使用折线图在显示数据随时间推移的进展时很常见。它在提取诸如趋势和季节性影响等信息方面有一些好处。 但是在处理超长的时间轴时有一个问…

    Python 2023年8月17日
    0106
  • Django设置跨域访问

    Django设置跨域访问 pip install django-cors-headers (2) settings.py 配置如下 INSTALLED_APPS = [ # ‘dj…

    Python 2023年6月11日
    0102
  • numpy 数组切片

    切片 切片语法格式: [start: end: step]切片操作,适用于numpy数组,列表,元组,字符串 1. index 见上图,索引的形式有两种,正向索引和负向索引。正向索…

    Python 2023年8月24日
    088
  • 基于MATLAB的加噪语音信号的滤波

    MATLAB数字滤波器实现GUI界面设计 一.滤波器的简述 在MATLAB环境下IIR数字滤波器和FIR数字滤波器的设计方 法即实现方法,并进行图形用户界面设计,以显示所介绍迷你滤…

    Python 2023年9月17日
    054
  • 从中间件团队窃取了这个组件,见识到了编码能力的天花板!!

    大家好,我是陶朱公Boy,又跟大家见面了。 前言 今天跟大家分享一款基于”生产者消费者模式”下实现的组件。 该组件是作者偶然在翻阅公司一中间件源码的时候碰到…

    Python 2023年10月17日
    095
  • Python入门系列(八)日期时间、数学、json

    日期时间 Python中的日期本身不是数据类型,但我们可以导入一个名为datetime的模块,将日期作为日期对象使用。 import datetime x = datetime.d…

    Python 2023年10月23日
    087
  • 使用scrapy爬取斗鱼直播间信息

    目录 1. 谷歌抓包工具的使用 * 1.1 打开Chrome开发者工具的方法 1.2 开发者工具的结构 1.3 network模块 2. 使用谷歌抓包工具抓取斗鱼数据 3. 使用s…

    Python 2023年10月3日
    0100
  • 解决Python使用matplotlib绘图时出现的中文乱码问题

    前言 你好,我是悦创。 博客文章:https://www.aiyc.top/1897.html 最近再写 Python 万能代码模板系列文章,公众号:AI悦创,首发。 然后,写到可…

    Python 2023年9月1日
    0118
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球