python 第三方模块click 的使用

2024-05-12 01:48

本文主要是介绍python 第三方模块click 的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

click模块 的使用
##官方文档##
http://click.pocoo.org/6/


click模块 可以 轻松将一个函数变成一个命令行工具

# 1. click是基于装饰器的,我们可以在方法上使用click.command()装饰器来将该方法变成一个命令行工具

import click 
@click.command()
def hello():click.echo('Hello World!')if __name__ == '__main__':hello()



1 click.option
option 最基本的用法就是通过指定命令行选项的名称,从命令行读取参数值,再将其传递给函数。我们除了设置命令行选项的名称,我们还会指定默认值,help 说明等,option 常用的设置参数如下:
  • default: 设置命令行参数的默认值
  • help: 参数说明
  • type: 参数类型,可以是 str, int, float 等
  • prompt: 当在命令行中没有输入相应的参数时,会根据 prompt 提示用户输入可以指定 True, 或者特定字符串来提示用户输入
  • nargs: 指定命令行参数接收的值的个数, -1 表示可以接收多个参数,


# 1 可以指定默认值, help 信息, prompt 提示信息
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()


# 2 还可以 指定 type
import click@click.command()
@click.option('--rate', '-rate',type=int, help='rate')  # 指定 rate 是 int 类型
def show(rate):print(f'type(rate):{type(rate)}')click.echo('rate: %s' % rate)if __name__ == '__main__':show()
# 我指定为int 类型 , 如果传入name 就会报错


##2-1 type 也可以设定可选值

import click@click.command()
@click.option('--hash-type', type=click.Choice(['md5', 'sha1']))
def digest(hash_type):click.echo('hash_type:{}'.format(hash_type))if __name__ == '__main__':digest()



## 4 有的时候可能需要输入密码 ,可以用 option
http://click.pocoo.org/6/options/#basic-value-options

import click@click.command()
@click.option('--password', prompt=True, hide_input=True, confirmation_prompt=True)
def input_password(password):click.echo('password: %s' % password)

如果 两次 输入相同,则通过. 如果输入不相同, 则提醒你 重新输入.


# 4-1 click.password_option () 有一个专门的装饰器

import click@click.command()
@click.password_option()
def input_password(password):click.echo('password: %s' % password)


###5 可以通过--, 或 - 来传递参数

import click@click.command()
@click.option('--model', '-model', type=click.Choice(['consume_loan', 'large', 'small']), default='large')
def run(model):click.echo("model:{}".format(model))if __name__ == '__main__':run()

python test_click.py -model small
python test_click.py --model small



2. click.argument
除了使用  @click.option  来添加 可选参数 ,还会经常使用  @click.argument  来添加 固定参数 。它的使用和 option 类似,但支持的功能比 option 少。
可以参考 这个文档
http://click.pocoo.org/6/arguments/#basic-arguments

## 1 为命令行添加 固定参数

import click@click.command()
@click.option('--count', default=1, help='number of greetings')
@click.argument('name')
def hello(count, name):for x in range(count):click.echo('Hello %s!' % name)if __name__ == '__main__':hello()





##2 看看多个 argument 的例子:

import click@click.command()
@click.argument('x')
@click.argument('y')
@click.argument('z')
def show(x, y, z):click.echo('x: %s, y: %s, z:%s' % (x, y, z))if __name__ == '__main__':show()



##3 nrgs 的用法 ,可以 吸收多余的参数
Variadic Arguments
http://click.pocoo.org/6/arguments/#variadic-arguments

# 其中,nargs=-1 表明参数 src 接收不定量的参数值,参数值会以 tuple 的形式传入函数。
# 如果 nargs 大于等于 1,表示接收 nargs 个参数值,上面的例子中,dst 接收一个参数值。
# The value is then passed as a tuple. Note that only one argument can be set to nargs=-1, as it will eat up all arguments.
# 用来吸收多余的参数, 作为一个元祖 传值


import click  @click.command()  
@click.argument('src', nargs=-1)  
@click.argument('dst', nargs=1)  
def move(src, dst):  click.echo('move %s to %s' % (src, dst))  if __name__ == '__main__':  move() 

## 4嵌套命令
# 可以通过group来实现命令行的嵌套,也就是让一个命令行工具具有多个命令

import click@click.group()
def cli():click.echo('Hello world')@cli.command()
def initdb():click.echo('Initialized the database')@cli.command()
def dropdb():click.echo('Dropped the database')if __name__ == '__main__':cli()


总结:  本文主要讲解了用click模块,将一个函数可以非常轻松的变成命令行函数.  讲解了常用的方法的使用. 更多还需参考官方文档. 

参考文档:

参考文档
命令行神器 Click 简明笔记
官方文档



分享快乐,留住感动. 2018-06-01 19:59:27 --frank

这篇关于python 第三方模块click 的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981264

相关文章

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

C#中Guid类使用小结

《C#中Guid类使用小结》本文主要介绍了C#中Guid类用于生成和操作128位的唯一标识符,用于数据库主键及分布式系统,支持通过NewGuid、Parse等方法生成,感兴趣的可以了解一下... 目录前言一、什么是 Guid二、生成 Guid1. 使用 Guid.NewGuid() 方法2. 从字符串创建

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos