当前位置: 首页 > news >正文

【新人系列】Python 入门(三十):工作常用第三方库 - 上

✍ 个人博客:https://blog.csdn.net/Newin2020?type=blog
📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html
📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们一起交流~
📚 专栏简介:在这个专栏,我将带着大家从 0 开始入门 Python 的学习。在这个 Python 的新人系列专栏下,将会总结 Python 入门基础的一些知识点,方便大家快速入门学习~
❤️ 如果有收获的话,欢迎点赞 👍 收藏 📁 关注,您的支持就是我创作的最大动力 💪

1. 命令行工具

1.1 常见工具

常见命令行工具:

  • argparse 是 Python 标准库中的一个模块,它提供了丰富的功能来定义命令行参数的名称、类型、默认值、帮助信息等。通过它,您可以轻松地处理用户在命令行中输入的各种参数,并且可以进行参数的验证和错误处理。
  • click 这个库具有高度的灵活性和可扩展性。它支持命令的嵌套、参数的多种类型(包括文件、目录等)、选项的别名、参数的自动文档生成等。使用 click 可以让命令行工具的定义更加清晰和易读。
  • fire 则以一种非常简洁的方式将现有的 Python 函数或对象转换为命令行接口。您不需要显式地定义参数和选项,fire 会根据函数的参数自动进行处理。

除了 Python 自带的命令行标准库外,click 库是最受欢迎、使用最多的第三方 Python 命令行解析工具。下面主要会介绍 click 库的使用,在此之前需要先安装一下这个第三方库。

pip install click

1.2 使用方法

在这里插入图片描述
示例一

  • 下面通过 @click.command() 将 print_msg 方法标记为了命令行命令。
  • 通过 @click.option 设置命令行传入参数 --name,以及默认值、提示信息和参数类型。
import click

@click.command()
@click.option("--name", default="hello", help="打印名称", type=str)
def print_msg(name):
    click.echo(f"名称为:{name}")

if __name__ == '__main__':
    print_msg()

在这里插入图片描述

示例二

  • 下面代码在上面示例的基础上,通过 @click.argument 装饰器指定了命令行必传的参数。
import click

@click.command()
@click.option("--count", default=1, help="打印次数", type=int)
@click.argument("name")
def print_msg(count, name):
    for x in range(count):
        click.echo(f"名称为:{name}")

if __name__ == '__main__':
    print_msg()

在这里插入图片描述

我们也可以通过 --help 来查看一下提示信息,和上个示例不同,在 test.py [OPTIONS] 旁增加了一个必填的参数 NAME,除 NAME 外下面的 Options 选项里的都是选填参数。

在这里插入图片描述

2. 定时工具

2.1 APScheduler 定义

这里我们会介绍一个简单易用的定时工具库 - APScheduler,在使用它之前同样需要安装一下。

pip install apscheduler

APScheduler 的一些关键特点和概念:

  1. 调度器(Scheduler)
  • BlockingScheduler:在执行任务时会阻塞当前线程,直到调度器被停止。
  • BackgroundScheduler:在后台运行,不会阻塞当前线程。
  1. 触发器(Trigger)
  • 决定任务何时执行。常见的触发器类型包括:
  • IntervalTrigger:按照固定的时间间隔执行任务。
  • DateTrigger:在指定的日期和时间执行一次任务。
  • CronTrigger:通过 cron 表达式来灵活定义任务的执行时间规则。
  1. 任务存储(Job Store)
  • 用于存储任务的信息,如任务的下次执行时间等。支持内存存储和数据库存储等方式。
  1. 执行器(Executor)
  • 负责执行任务。默认提供了线程池和进程池执行器。

2.2 使用方法

使用 APScheduler 的一般步骤:

  1. 创建调度器对象,如 BlockingScheduler 或 BackgroundScheduler。
  2. 定义任务函数。
  3. 使用适当的触发器创建任务,并将任务添加到调度器中。
  4. 启动调度器。

使用 DateTrigger

下面这个例子定义了一个打印的函数,并使用 date 作为触发器,在启动调度器之后,任务函数将会在指定的时间 2024.8.13 9:41:00 的时候执行打印操作。

import datetime
from apscheduler.schedulers.blocking import BlockingScheduler

# 创建调度器对象
scheduler = BlockingScheduler()

# 定义任务函数
def print_msg(text):
    print(text)

# 使用 date 触发器创建任务,并添加到调度器中
scheduler.add_job(print_msg, 'date', run_date=datetime.datetime(2024, 8, 13, 9, 41, 00), args=['hello world'])

# 启动调度器
scheduler.start()

使用 IntervalTrigger

下面这个示例则是使用 interval 作为触发器,通过 seconds=5 定义了任务函数每 5 秒执行一次,并且也定义了 end_date,将任务函数执行的截止时间设置在 2024-8-13 12:00:00。

from apscheduler.schedulers.blocking import BlockingScheduler

# 创建调度器对象
scheduler = BlockingScheduler()

# 定义任务函数
def print_msg(text):
    print(text)

# 使用 interval 触发器创建任务,并添加到调度器中
scheduler.add_job(print_msg, 'interval', seconds=5, args=['hello world'], end_date="2024-8-13 12:00:00")

# 启动调度器
scheduler.start()

使用 CronTrigger

cron 触发器相对上面两个触发器则更加的灵活,不仅可以指定具体的执行日期,还可以指定执行的周期。下面这个例子,同样展示的是每 5 秒执行一次任务。

from apscheduler.schedulers.blocking import BlockingScheduler

# 创建调度器对象
scheduler = BlockingScheduler()

# 定义任务函数
def print_msg(text):
    print(text)

# 使用 cron 触发器创建任务,并添加到调度器中
scheduler.add_job(print_msg, 'cron', second='*/5', args=['hello world'])

# 启动调度器
scheduler.start()

3. 文字转语音

我们再介绍一个 pyttsx3 库,它可以将文本转换成语音。在使用之前,同样需要下载一下这个第三方库。

pip install pyttsx3

下面这段示例在运行的时候,系统就会读出 Hello World 这段话。

import pyttsx3

# 初始化引擎
engine = pyttsx3.init()

engine.setProperty('rate', 150)  # 调整语速
engine.setProperty('volume', 0.9)  # 调整音量

# 将文本转换为语音并播放
engine.say("Hello, World!")
engine.runAndWait()

相关文章:

  • 51单片机(国信长天)矩阵键盘的基本操作
  • macOS git status 中文现实不正常 -解决方法
  • WebRTC与EasyRTC:开启智能硬件音视频通讯的全新旅程
  • 【视频总结】Deep Dive into LLMs like ChatGPT 深入探索像ChatGPT这样的大语言模型|Andrej Karpathy
  • 【AI编程】体验a0.dev:专为移动端app的对话式AI编程工具
  • C#常用744单词
  • Xlua中C#引用Lua变量,导致Lua侧的GC无法回收的原因及解决方法
  • Vue.js 在低代码开发平台中的应用与优化
  • 【05】RUST错误处理
  • ASP.NET Core SignalR案例:导入英汉词典
  • 开发中用到的设计模式
  • 前端面试题目---页面抖动的原因、如何避免、如何解决
  • Spring Boot过滤器链:从入门到精通
  • 最新版Edge浏览器集成ActiveX控件之金山WpsDocFrame控件
  • redis之数据库
  • redis 缓存击穿问题与解决方案
  • Fabric.js、leaferjs、pixi.js 库的对比分析
  • 清华大学《DeepSeek:从入门到精通》
  • 零基础入门机器学习 -- 第四章分类问题与逻辑回归
  • 自动化测试 - 黑马头条测试项目笔记
  • 网站建设费用会计分录/郑州网站建设推广有限公司
  • 做网站的用什么主机好/百度竞价推广账户
  • 丰台区社会建设工作办公室网站/软文自助发布平台系统
  • 郑州手机网站推广外包/国际新闻头条
  • 视频推广联盟/搜索引擎优化论文3000字
  • 网页设计公司费用低/百度首页排名优化服务