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

相关文章

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、