【新人系列】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 库的使用,在此之前需要先安装一下这个第三方库。

shell 复制代码
pip install click

1.2 使用方法


示例一

  • 下面通过 @click.command() 将 print_msg 方法标记为了命令行命令。
  • 通过 @click.option 设置命令行传入参数 --name,以及默认值、提示信息和参数类型。
python 复制代码
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 装饰器指定了命令行必传的参数。
python 复制代码
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,在使用它之前同样需要安装一下。

shell 复制代码
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 的时候执行打印操作。

python 复制代码
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。

python 复制代码
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 秒执行一次任务。

python 复制代码
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 库,它可以将文本转换成语音。在使用之前,同样需要下载一下这个第三方库。

shell 复制代码
pip install pyttsx3

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

python 复制代码
import pyttsx3

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

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

# 将文本转换为语音并播放
engine.say("Hello, World!")
engine.runAndWait()
相关推荐
大雄野比9 分钟前
Python 实现 macOS 系统代理的设置
python·macos·策略模式
山海青风16 分钟前
OpenAI 实战进阶教程 - 第十二节 : 多模态任务开发(文本、图像、音频)
图像处理·人工智能·python·ai作画·音视频·语音识别
007php00733 分钟前
Docker、Ollama、Dify 及 DeepSeek 安装配置与搭建企业级本地私有化知识库实践
运维·服务器·开发语言·后端·docker·容器·云计算
众乐乐_200838 分钟前
JVM栈帧中|局部变量表、操作数栈、动态链接各自的任务是什么?
java·开发语言·jvm
LaughingZhu1 小时前
PH热榜 | 2025-02-10
人工智能·经验分享·产品运营
魏翾蒨1 小时前
VBA语言的数据可视化
开发语言·后端·golang
岁月如歌,青春不败1 小时前
DeepSeek与GPT大语言模型教程
人工智能·python·gpt·深度学习·机器学习·语言模型·deepseek
致奋斗的我们1 小时前
项目:利用rsync备份全网服务器数据
linux·运维·服务器·开发语言·github·rsync·openeuler
m0_748239331 小时前
深入解析Spring Boot中的@ConfigurationProperties注解
java·spring boot·后端
fxy流年无悔1 小时前
工作案例 - python绘制excell表中RSRP列的CDF图
python