click文档
安装命令:
一些常见的用法如下
详细运行可通过命令查看:python jiaoben.py --help
import sys
import click
from typing import IO
@click.group()
@click.version_option('1.0.0', prog_name="测试")
def main():
pass
@main.command(help="这是一个测试程序")
@click.option("-A", "--all", default=True, is_flag=True, type=click.Choice(False, True), show_default=True, show_choices=True, help="select all")
@click.option("-B", "--batch", default=True, type=click.Choice(False, True), show_default=True, show_choices=True, help="select all")
def print_test():
"""
is_flag: 是否可以缺省
prompt: 当在命令行中没有输入相应的参数时,会根据 prompt 提示用户输入
type: string, int, float ,click.Choice
"""
click.echo()
@main.command("n", help="使用命令python cli.py n src dst 来运行")
@click.argument('src', nargs=-1)
@click.argument('dst', nargs=1)
def net_print(src, dst):
"""
python cli.py src1 src2 src3 dst
输入: ('src1', 'src2', 'src3')---dst
pip install colorama
click.secho 可输出带颜色的字体和背景
:param src: nargs: -1 表明参数 src 接收不定量的参数值,参数值会以 tuple 的形式传入函数
:param dst: nargs:1 大于等于 1,表示接收 nargs 个参数值
:return:
"""
click.echo(f'{src}---{dst}')
click.secho(f'{src}---{dst}', fg='yellow', bg='red', underline=True, dim=True, bold=True)
@main.command(help="复制文件")
@click.argument('input_file', default=(None if sys.stdout.isatty() else "-"),type=click.File("rb"))
@click.argument('output_file', default=(None if sys.stdout.isatty() else "-"),type=click.File("wb", lazy=True))
def copy_file(input_file: IO, output_file: IO):
while True:
chunk = input_file.read(1024)
if not chunk:
break
output_file.write(chunk)
@main.command(help="命令使用get-file-path,输入参数时,路径读取并判断是否存在")
@click.argument("filename", type=click.Path(exists=True))
def get_file_path(filename):
# 清除终端屏幕
click.clear()
click.echo(click.format_filename(filename))
click.echo(click.style(click.format_filename(filename), bg="blue", fg="red"))
@main.command()
@click.argument("app_or_url_file")
def launch(app_or_url_file):
"""
打开指定的 URL, app, 文件
:param app_or_url_file: URL / app(必须用双引号) / 文件
:return:
"""
click.launch(app_or_url_file)
if __name__ == '__main__':
main()