# Python库

#### 有用的Python库

**rich**

* 用于创建丰富多彩且格式优美的终端输出
* 支持语法高亮、进度条、表格、语法树等高级控制台渲染
* 可以轻松美化命令行界面和日志输出

**keyboard**

* 提供全局键盘事件监听和模拟按键功能
* 可以捕获键盘输入、注册热键、模拟按键
* 适用于开发快捷键、系统自动化工具

**pyclip**

* 跨平台剪贴板操作库
* 可以方便地读取和写入系统剪贴板内容
* 支持文本、图像等多种类型的剪贴板交互

**numpy**

* 科学计算和数据处理的核心库
* 提供高性能多维数组对象
* 支持大量数学、线性代数、傅里叶变换等操作
* 机器学习、数据分析、科学计算的基础库

**sounddevice**

* 音频输入输出库
* 支持播放和录制音频
* 可以处理各种音频设备和音频流
* 适用于音频处理、音乐应用、语音识别等

**websockets**

* WebSocket 协议的实现
* 支持全双工的实时网络通信
* 适合开发实时聊天、在线游戏、协作工具等

**pypinyin**

* 汉字转拼音库
* 可以将中文汉字转换为对应的拼音
* 支持多种拼音风格（如全拼、首字母等）
* 常用于中文文本处理、搜索、排序等场景

**watchdog**

* 文件系统监控库
* 可以监听文件和目录的变化（创建、修改、删除）
* 适合开发自动重载、同步、备份等需要实时文件系统监控的应用

**typer**

* 命令行界面（CLI）开发库
* 基于 Python 类型注解快速创建命令行工具
* 自动生成帮助文档和参数解析
* 简化命令行应用的开发

**srt**

* SRT（SubRip Subtitle）字幕文件处理库
* 用于读取、写入和操作字幕文件
* 支持字幕时间戳解析和转换

**typeguard**

* 运行时类型检查库
* 可以在运行时验证函数参数和返回值的类型
* 增加代码类型安全性

**sherpa\_onnx**

* 语音识别和文本到语音（TTS）的 ONNX 运行时库
* 支持各种语音模型的推理
* 高性能、跨平台的语音处理方案

**funasr\_onnx**

* 阿里达摩院的语音识别 ONNX 运行时
* 提供语音转文字的推理能力
* 支持多种语言和场景的语音识别

**kaldi-native-fbank**

* Kaldi 声学特征提取库的本地实现
* 用于语音信号的特征提取
* 主要用于语音识别和语音处理

**jieba**

* 中文分词库
* 支持精确模式、全模式和搜索引擎模式
* 可以进行中文文本分词、关键词提取
* 广泛应用于中文自然语言处理

**pyInstaller**

* 将 Python 脚本转换为独立的可执行文件
* 支持 Windows、macOS 和 Linux 平台
* 自动收集程序依赖的所有库和资源
* 生成单文件或文件夹模式的可执行程序
* 简化软件分发
* 不需要安装 Python 环境
* 保护源代码

**onnxruntime**

* ONNX Runtime 是一个机器学习推理加速库
* 该版本的服务端模型只能在 Windows 10 或更新的系统上运行
* 低于 Windows 10 的系统将无法使用

**screeninfo**

* 获取屏幕信息
* 无需额外依赖
* 支持多显示器环境
* 动态调整窗口大小和位置

**pandas**

* 用于数据分析和操作的强大工具库。
* 提供DataFrame对象，方便数据清洗、处理和分析。
* 支持大量的数据操作功能，如合并、重塑和聚合。

**numpy**

* 用于科学计算的基础包。
* 提供高性能的多维数组对象和工具。
* 广泛用于数学、科学和工程领域的数值计算。

**matplotlib**

* 用于创建静态、交互式和动画可视化的绘图库。
* 提供丰富的图表类型，如折线图、散点图和条形图。
* 可以自定义图表的样式和布局。

**SQLAlchemy**

* Python 的 ORM 和 SQL 工具包
* 支持多种数据库（如 MySQL、PostgreSQL、SQLite）
* 提供灵活的查询构建和模型定义功能
* 支持同步和异步操作
* 适合复杂数据库操作和应用程序开发

**TortoiseORM**

* **轻量级的异步 ORM（对象关系映射）框架**，专为 Python 的异步编程设计。
* **异步操作**：支持异步数据库操作，充分利用 Python 的 asyncio 特性，提高性能。
* **关系模型**：支持复杂的数据库关系（如一对多、多对多）。
* **多种数据库支持**：兼容 SQLite、MySQL、PostgreSQL、Microsoft SQL Server 和 Oracle 等数据库。
* **简洁易用**：语法简洁，易于上手，同时提供了强大的功能。

**Aerich**

* 一个用于 **Tortoise ORM** 的数据库迁移工具，类似于 Django 的迁移工具或 SQLAlchemy 的 Alembic。
* **数据库迁移**：支持生成迁移脚本，将模型的变更同步到数据库。
* **版本控制**：可以管理数据库的版本，支持回滚到之前的版本。
* **自动化**：自动生成迁移脚本，减少手动编写 SQL 的工作量。
* **集成方便**：与 Tortoise ORM 集成，适用于异步 ORM 场景。
* **数据库版本管理**：在开发过程中，随着模型的变更，需要同步更新数据库结构。
* **团队协作**：多人开发时，通过迁移工具可以方便地管理数据库的变更。
* **自动化部署**：在 CI/CD 流程中，可以自动应用迁移脚本，确保数据库结构的一致性。

**flask**

* 轻量级的Web应用框架。
* 易于上手，适合快速开发简单的Web应用。
* 支持扩展插件（如 Flask-SQLAlchemy、Flask-Login）
* 支持扩展，可以构建复杂的应用程序。

**django**

* 高级的Web框架，鼓励快速开发和干净、实用的设计。
* 包含自动管理数据库的ORM系统。
* 提供强大的安全性和灵活性，适用于开发大型网站。

**fastAPI**

* 高性能 Python Web 框架
* 基于 ASGI 标准，支持异步编程
* 自动生成 API 文档（Swagger 和 ReDoc）
* 适合构建高性能的 RESTful API

**scrapy**

* 强大的网络爬虫框架
* 支持数据提取、处理和存储
* 提供高效的异步请求处理
* 广泛应用于数据采集和网络爬虫项目

**scikit-learn**

* 用于数据挖掘和数据分析的简单高效的工具。
* 提供了多种分类、回归和聚类算法。
* 适合机器学习新手和专业人士。

**tensorflow**

* 由Google开发的开源机器学习框架。
* 支持深度学习模型的构建和训练。
* 广泛用于图像识别、语言模型和其他AI领域。

**pytorch**

* 由Facebook开发的开源机器学习库。
* 提供动态计算图和自动微分功能。
* 适合研究和开发深度学习模型。

**yaml**

* `yaml`模块用于解析和生成YAML文件。
* YAML是一种直观的数据序列化格式，常用于配置文件。
* `yaml`模块允许Python程序读取和写入YAML文件，处理YAML数据结构。

**pathlib**

* `pathlib`模块提供了面向对象的文件系统路径操作。
* 它封装了文件路径操作，使得路径操作更加直观和易于理解。
* `Path`类是`pathlib`模块的核心，提供了路径的创建、操作和检查等方法。

**typing**

* `typing`模块支持Python的类型提示功能，允许开发者为变量、函数参数和返回值指定预期的类型。
* 这有助于代码的静态类型检查和IDE的代码提示。`Dict`、`Any`和`Optional`是`typing`模块中常用的类型注解。

**dataclasses**

* `dataclasses`模块提供了一个装饰器`dataclass`，用于自动生成特殊方法（如`__init__`、`__repr__`等）的数据类。
* 简化了数据封装类的定义，使得定义类更加简洁。

**abc**

* `abc`模块提供了创建抽象基类（ABC）和定义抽象方法的工具。
* 抽象基类是一种不能被实例化的类，它定义了一组抽象方法，强制要求任何继承自它的子类都必须实现这些方法。
* 这有助于构建灵活的类层次结构和实现多态。

**Sphinx**

* 文档生成工具
* 提供灵活的文档构建功能
* 支持多种标记语言，如 reStructuredText 和 Markdown
* 技术文档、API 文档、书籍编写的基础库
* 支持自动文档生成和丰富的扩展功能
* 允许自定义主题和模板，提供文档美化和个性化
* 支持目录结构定义和文档间的交叉引用
* 生成的文档包含索引和搜索功能，方便信息检索
* 支持静态文件的包含，如图片和样式文件
* 与版本控制系统集成，便于文档的版本管理
* 跨平台兼容性，适用于多种操作系统
* 适用于个人和团队创建和管理技术文档和书籍

**MkDocs**

* 文档生成工具
* 提供简洁的文档构建流程
* 支持Markdown语法，便于快速编写文档
* 跨平台兼容性，适用于Windows、macOS、Linux等多种操作系统
* 适用于个人和团队快速创建和管理技术文档和项目文档

**Cryptography**

* **支持多种加密算法**：包括对称加密算法（如 AES）、非对称加密算法（如 RSA）、哈希算法（如 SHA-256）等\[^4^]。
* **易于使用**：提供了高级的 API，使得加密和解密操作简单易懂\[^4^]。
* **安全性**：设计上注重安全性，避免了许多常见的安全漏洞\[^4^]。
* **广泛的应用场景**：可以用于网络通信加密、文件加密、数字签名、消息认证码等多种场景\[^4^]。
* **网络通信加密**：使用 TLS/SSL 进行数据加密和解密\[^4^]。
* **文件加密**：使用 AES 算法对文件进行加密和解密\[^4^]。
* **数字签名**：使用 RSA 算法对数据进行签名和验证\[^4^]。
* **密码学哈希**：使用 SHA 算法生成数据的哈希值\[^4^]。

**Celery**

* 一个分布式任务队列系统，主要用于处理异步任务和定时任务。
* **异步任务**：可以将耗时的操作（如发送邮件、处理文件等）异步执行，避免阻塞主线程。例如发送短信、邮件、文件处理等。
* **定时任务**：支持周期性任务（如每天定时统计数据）和一次性任务。例如定期清理日志、定时备份数据等。
* **分布式执行**：任务可以在多个工作进程（Worker）上并行执行，支持分布式部署。在多台机器上并行处理任务，提高效率。
* **结果存储**：任务执行的结果可以存储到指定的后端（如 Redis、数据库等）。
* **灵活的配置**：支持多种消息代理（如 Redis、RabbitMQ）和结果存储方式。
* **任务工作流**：可以设计复杂的任务工作流，例如任务链、任务组等。

#### 有用的Linux库

**tmux**

* 是一个终端复用器（Terminal Multiplexer）
* Linux/Unix 系统下的命令行工具
* 在单个屏幕中管理多个终端
* 后台运行终端会话
* 允许断开连接后重新连接会话
* 分屏、多窗口管理

**awk**

awk 是一个强大的文本处理工具，主要用于处理和分析结构化的文本文件，特别是按行和列组织的数据。

awk 的主要功能和特点：

1. 数据处理

* 可以轻松地处理以空格或制表符分隔的文本文件
* 支持按列（字段）提取和处理数据
* 能够执行复杂的文本转换和统计分析

2. 工作原理

* 逐行读取输入文件
* 将每一行自动分割成若干字段（默认以空白字符分隔）
* 对每一行执行用户定义的操作

3. 基本语法

```bash
awk 'pattern { action }' filename
```

4. 常用内置变量

* `$0`：整行内容
* `$1, $2, $3`：第1、2、3个字段
* `NR`：当前行号
* `NF`：字段总数

5. 典型用法示例

提取文件的第2列：

```bash
awk '{print $2}' filename
```

统计文件行数：

```bash
awk 'END {print NR}' filename
```

条件过滤（打印第3列大于100的行）：

```bash
awk '$3 > 100 {print $0}' filename
```

计算某一列的总和：

```bash
awk '{sum += $3} END {print sum}' filename
```

6. 高级特性

* 支持正则表达式匹配
* 可以执行数学运算
* 内置字符串和数学函数
* 支持条件判断和循环
* 可以生成报告和格式化输出

7. 应用场景

* 日志分析
* 系统监控
* 数据提取和转换
* 简单的数据统计
* 文本处理

**Pandoc**

Pandoc 是一个功能强大且灵活的开源文档转换工具，由 John MacFarlane 开发。它被誉为“文档转换的瑞士军刀”，能够将文档从一种格式转换为另一种格式，支持多种输入和输出格式。

1. **多格式支持**\
   Pandoc 支持多种文档格式的转换，包括但不限于：
   * **输入格式**：Markdown、HTML、LaTeX、Word (docx)、EPUB、reStructuredText、Textile、MediaWiki 等。
   * **输出格式**：Markdown、HTML、LaTeX、PDF、Word (docx)、EPUB、幻灯片（如 Beamer、Reveal.js）、ODT、Plain Text 等。
2. **命令行工具**\
   Pandoc 主要通过命令行进行操作，用户可以通过简单的命令实现文档格式的转换。例如：

   ```bash
   pandoc input.md -o output.docx
   ```

   这条命令将 Markdown 文件 `input.md` 转换为 Word 文件 `output.docx`。
3. **高度可定制**\
   Pandoc 提供了丰富的选项和参数，用户可以根据需要自定义转换过程。例如，可以指定模板、添加元数据、调整样式等。
4. **扩展性强**\
   Pandoc 支持通过插件和过滤器扩展其功能。用户可以编写自定义过滤器来处理文档内容，或者使用现有的过滤器来实现特定的转换需求。
5. **学术写作支持**\
   Pandoc 对学术写作提供了强大的支持，包括引用管理（通过 BibTeX 或 CSL）、数学公式渲染（LaTeX 或 MathML）以及复杂的文档结构。

* **文档格式转换**：将 Markdown 文件转换为 Word、PDF、HTML 等格式。
* **学术写作**：生成符合学术规范的 PDF 文档，支持引用和数学公式。
* **电子书制作**：将文档转换为 EPUB 格式，适用于电子书阅读器。
* **幻灯片生成**：将 Markdown 或 LaTeX 文件转换为 Beamer 或 Reveal.js 格式的幻灯片。
* **技术文档编写**：将 reStructuredText 或 Markdown 文件转换为 HTML 或 PDF 格式的技术文档。
* **灵活性**：通过命令行参数和过滤器实现高度定制化。
* **开源生态**：拥有活跃的社区和丰富的插件资源。
* **跨平台**：适用于 Windows、macOS 和 Linux 等多种操作系统。

**dos2unix**

dos2unix 是一个常用的命令行工具，用于将文件从 Windows 格式转换为 Unix/Linux 格式。主要区别在于： Windows 系统中，换行符是 \r\n（回车+换行）。 Unix/Linux 系统中，换行符是 \n（仅换行）。 该工具可以移除文件中的 Windows 特定字符，同时还能清理一些隐藏的非打印字符（如不间断空格 U+00A0）。 命令执行和输出：

你运行了命令 dos2unix funasr\_demo.py。 输出信息 dos2unix: converting file funasr\_demo.py to Unix format... 表示工具正在将文件转换为 Unix 格式。 如果没有报错，说明转换成功。

可以使用 Python 脚本或其他工具进一步清理文件。例如： tr -d '\r' < funasr\_demo.py > temp.py && mv temp.py funasr\_demo.py 这个命令会移除文件中的回车符。 预防措施：

如果你经常在 Windows 和 Linux 系统之间传输文件，建议在编辑文件时使用支持跨平台的编辑器（如 VSCode），并确保文件格式统一为 Unix 格式。

<https://yzd4tfgdksubh9tj2qqc.wgetcloud.online/link/42875bfd-dfd1-32e3-9716-02c0788965fb?target=clash> <https://vd9rjmh8z49uq28pcdmn.wgetcloud.online/link/81dbfd93-73ab-39ed-a08c-b343b4100811>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://xtaiyang.gitbook.io/xtaiyang/python_lib.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
