Python中的Click模块
Python中的Click模块
1. 安装和简单使用
1.1 安装
pip install click
1.2 简单使用
1.2.1 @click.command()
用于将一个函数转换为命令行接口。当使用这个装饰器修饰一个函数时,该函数将被注册为一个可执行的命令,可以通过命令行调用。
import click
'''在运行起来的时候没有任何区别'''
@click.command()
def main():
print("执行main方法")
if __name__ == "__main__":
main()
1.2.2 @click.group()
@click.group()
是Python中click包的一个装饰器,用于创建一个命令行组。当使用这个装饰器修饰一个函数时,该函数将作为命令行组的入口点,可以包含其他子命令。通过在命令行中使用组名和子命令名来调用这些子命令。
import click
@click.command()
def fun1():
print("执行fun1方法")
@click.command()
def fun2():
print("执行fun2方法")
@click.group()
def main():
pass
main.add_command(fun1)
main.add_command(fun2)
if __name__ == "__main__":
main()
1.2.3 @click.option()
@click.option()
是Python中click包的一个装饰器,用于为命令行接口添加选项参数。
import click
@click.command()
@click.option('--input','-i',help="请输入:input内容",type=str,required=True,default='默认值')
def fun2(input):
print(f"执行fun2方法{input}")
@click.group()
def main():
pass
main.add_command(fun2)
if __name__ == "__main__":
main()
import click
@click.command()
@click.option('--username','-u',help="请输入:用户名",type=str,required=True)
@click.option('--e_mail','-e',help="请输入:邮箱",type=str,required=True)
def getUserInfo(username,e_mail):
print(f"用户名:{username}")
print(f"邮箱:{e_mail}")
@click.group()
def main():
pass
main.add_command(getUserInfo)
if __name__ == "__main__":
main()
1.2.4 click.echo()
click.echo()
是Python中click包的一个函数,用于在命令行界面输出文本。
import click
@click.command()
def fun1():
click.echo(click.style('这是红色文本', fg='red'))
click.echo(click.style('这是绿色文本', fg='green'))
click.echo(click.style('这是蓝色文本', fg='blue'))
@click.group()
def main():
pass
main.add_command(fun1)
if __name__ == "__main__":
main()
1.2.5 click.argument()
import click
@click.command()
@click.argument('name') # 必须提供的参数
@click.argument('age', default=30) # 可选的参数,默认值为 30
@click.argument('files', nargs=-1, metavar='<file1> <file2> ...') # 接受任意数量的文件名
def greet(name, age, files):
# 输出用户的名字和年龄
print(f'Hello, {name}! You are {age} years old.')
# 如果有文件输入,列出每个文件的处理情况
if files:
print("Processing the following files:")
for file in files:
print(f' - {file}')
else:
print("No files to process.")
if __name__ == '__main__':
greet()
2. 参数解析
2.1 @click.option()
配置名称 | 是否必须配置 | 默认值 | 说明 |
---|---|---|---|
name | 是 | 无 | 选项的名称,通常以短横线开头,如 -f 或 --file。 |
flag | 否 | False | 布尔标志,如果指定,则该选项不需要值。 |
required | 否 | False | 布尔值,表示该选项是否必须提供。 |
help | 否 | 无 | 选项的帮助信息,将在命令行中使用 --help 时显示。 |
type | 否 | 无 | 选项的数据类型,例如 int、float 等。 |
default | 否 | 无 | 选项的默认值。 |
show_default | 否 | True | 布尔值,表示是否在帮助信息中显示默认值。默认为 True。 |
callback | 否 | 无 | 一个回调函数,当选项被设置时调用。 |
multiple | 否 | False | 布尔值,表示该选项是否可以多次使用。默认为 False。 |
expose_value | 否 | True | 布尔值,表示是否将选项的值传递给回调函数。默认为 True。 |
hide_input | 否 | False | 布尔值,用于隐藏输入。默认为 False。 |
confirmation_promt | 否 | False | 布尔值,用于重复输入。默认为 False。 |
is_eager | 否 | False | 布尔值,表示该命令行选项优先级高于其他选项。默认为 False。 |
prompt | 否 | None | 如果设置为 True 或指定提示字符串,当命令行没有输入该选项时,程序将提示用户输入该选项的值。这在交互式命令行工具中特别有用。 |
nargs | 否 | 1 | 指定该选项接收的值的个数。默认值为 1,但可以设置为 -1 来接收多个值。数字也可以设置为固定数量。 |
metavar | 否 | None | 自定义该选项在帮助页面中的显示名称。默认情况下,click 会根据类型自动生成参数的显示名称。使用此选项可以使帮助文档更具可读性和自定义性。 |
option 提供了两个参数来设置密码的输入:hide_input 和 confirmation_promt,其中,hide_input 用于隐藏输入,confirmation_promt 用于重复输入。click 也提供了一种快捷的方式,通过使用 @click.password_option()。
2.2 @click.echo()
配置名称 | 是否必须配置 | 默认值 | 说明 |
---|---|---|---|
values | 否 | 无 | 可变参数,可以传入任意数量的参数,这些参数将被拼接成一个字符串并输出。 |
err | 否 | False | 布尔值,默认为 False。如果为 True,则将输出重定向到 stderr。 |
nl | 否 | True | 布尔值,默认为 True。如果为 False,则不会在输出末尾添加换行符。 |
color | 否 | None | 字符串或 None,默认为 None。如果为字符串,则使用该颜色进行输出。如果为 None,则不使用颜色。 |
file | 否 | sys.stdout | 文件对象,默认为 sys.stdout。如果指定了文件对象,则将输出写入该文件。 |
2.3 @click.argument
配置名称 | 是否必须配置 | 默认值 | 说明 |
---|---|---|---|
param_type | 是 | 无 | 定义参数类型。例如 int , str , float 等。通常是 click 模块提供的类型。 |
default | 否 | 无 | 指定参数的默认值。如果不指定,则此参数为必需项。 |
nargs | 否 | 1 | 指定参数可以接受的值的数量。例如,nargs=-1 表示接受多个值。 |
required | 否 | True | 如果设置为 True,则此参数为必需的。通常用于 @click.option ,但在 @click.argument 中,参数通常是必需的。 |
help | 否 | 无 | 为该参数提供帮助信息,用于生成帮助文档。 |
metavar | 否 | 无 | 设置参数的显示名称,通常用于帮助文档中。 |
expose_value | 否 | True | 如果为 True,则该参数的值会暴露给命令的内部代码。 |
is_eager | 否 | False | 如果为 True,此参数将在所有选项之前进行处理。 |
is_flag | 否 | False | 将参数设置为布尔标志。这个选项通常在 @click.option 中使用,而不是 @click.argument 。 |
show_default | 否 | False | 如果为 True ,则在帮助文档中显示参数的默认值。 |
argument 还有另外一种常见的用法,就是接收不定量的参数。
nargs=-1 表明参数 src 接收不定量的参数值,参数值会以 tuple 的形式传入函数。如果 nargs 大于等于 1,表示接收 nargs 个参数值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)