头图

本人荣幸地宣布,我的首个 Python 项目 tzst 已正式登陆 PyPI (Python Package Index)。tzst 是一个致力于简化 .tzst.tar.zst 归档文件创建与管理的 Python 库,其核心优势在于集成了性能卓越的 Zstandard (zstd) 压缩算法。

在软件开发实践中,Zstandard 以其出色的压缩比和处理速度受到广泛认可。然而,在 Python 环境中,直接且便捷地操作经由 tar 归档后再使用 Zstandard 压缩的文件(即 .tar.zst,本项目亦称 .tzst)尚存改进空间。tzst 的开发初衷便是为了填补这一空白,提供一个功能全面、接口友好的解决方案。

tzst 的主要特性

tzst 具备一系列精心设计的特性,旨在提升用户体验和操作效率:

  • 卓越的压缩性能:采用 Zstandard 算法,实现高压缩比与高速压缩/解压。
  • 兼容 tar 格式:生成符合 tar 规范的标准归档文件,并应用 Zstandard 进行压缩。
  • 命令行接口 (CLI):提供一套设计直观的命令行工具,便于进行快速的归档管理。
  • Python 应用程序接口 (API):为程序化集成需求提供符合 Pythonic 风格的、简洁易用的 API。
  • 跨平台支持:确保在 Windows、macOS 及 Linux 等主流操作系统上均可稳定运行。
  • 支持多种文件扩展名:无缝处理 .tzst.tar.zst 两种标准文件扩展名。
  • 灵活的解压选项:支持按完整路径结构解压,或将归档内所有文件提取至单一扁平化目录。

安装指南

获取 tzst 的过程十分便捷。通过 PyPI,您可以使用 pip 命令轻松安装:

pip install tzst

若需从源代码构建或参与项目开发,可按以下步骤操作:

git clone https://github.com/xixu-me/tzst.git
cd tzst
pip install -e . # 标准源码安装
# 或针对开发环境,安装包含额外开发工具的版本:
pip install -e .[dev]

快速入门

tzst 提供了命令行工具和 Python API 两种使用方式,均易于掌握。

命令行操作示例

通过 tzst 命令,您可以高效执行归档任务:

  • 创建归档文件:

    tzst a archive.tzst file1.txt directory/
  • 解压归档文件:

    tzst x archive.tzst
  • 列出归档内容:

    tzst l archive.tzst
  • 测试归档文件完整性:

    tzst t archive.tzst
:项目的 README.md 文件提及了使用 uvx tzst 的方式,该方法可能在包解析和执行速度上具有优势,且无需显式安装 tzst

Python API 调用示例

在 Python 代码中集成 tzst 同样直接:

from tzst import create_archive, extract_archive, list_archive, test_archive

# 创建归档文件
create_archive("archive.tzst", ["file1.txt", "file2.txt", "directory/"])

# 解压归档文件
extract_archive("archive.tzst", "output_directory/")

# 列出归档文件内容
contents = list_archive("archive.tzst", verbose=True)
for item in contents:
    print(f"{item['name']}: {item['size']} bytes")

# 测试归档文件完整性
if test_archive("archive.tzst"):
    print("归档文件经验证有效。")
else:
    print("归档文件可能存在损坏。")

功能详解

命令行接口 (CLI)

tzst 的 CLI 工具提供了一组核心命令,包括:

  • a (别名 add, create):用于创建新的归档文件或向现有归档文件中添加文件。用户可指定压缩级别(范围 1-22,默认值为 3)。
  • x (别名 extract):按照归档文件内的完整路径结构提取文件。
  • e (别名 extract-flat):提取文件,但不创建归档时的目录结构(实现扁平化输出)。
  • l (别名 list):列出归档文件中的内容。通过 -v 选项可获取更详细的列表信息。
  • t (别名 test):对归档文件的完整性进行测试。

Python API

tzst 的 Python API 以 TzstArchive 类为核心,提供了面向对象的归档操作方式。 此外,库中还包含一组便捷函数(例如 create_archive, extract_archive, list_archive, test_archive),旨在简化常见的归档任务。

通过 TzstArchive 类进行操作的示例:

from tzst import TzstArchive

# 创建新的归档文件,指定压缩级别
with TzstArchive("archive.tzst", "w", compression_level=5) as archive: #
    archive.add("file.txt") #
    archive.add("data_directory/", recursive=True) #

# 读取现有归档文件
with TzstArchive("archive.tzst", "r") as archive: #
    contents = archive.list(verbose=True) #
    for item in contents:
        print(item['name'])
    archive.extract(path="extraction_output/") #

文件扩展名与压缩级别管理

  • 文件扩展名tzst 能够自动识别和处理 .tzst.tar.zst 两种扩展名。在创建归档文件时,若未指定这两种标准扩展名,系统将默认添加 .tzst
  • 压缩级别:Zstandard 算法支持从 1 至 22 的压缩级别。级别数值越高,压缩效果越好,但相应地会增加处理时间。tzst 默认采用级别 3,该级别在压缩效率与处理速度之间实现了较好的平衡。

tzst 的比较优势

相较于其他常见的压缩归档工具:

  • tar + gzip 对比:Zstandard 通常能提供更高的压缩比,并且在解压速度上更具优势。
  • tar + xz 对比:在达到相近压缩比的情况下,Zstandard 的压缩速度显著优于 xz。
  • zip 对比tzst 通常能够实现更佳的压缩效果,并能更完善地保留 Unix 文件系统的权限及元数据信息。

异常处理机制

tzst 定义了一系列特定的异常类,如 TzstArchiveError, TzstCompressionError, TzstDecompressionError, 和 TzstFileNotFoundError。 这种设计有助于开发者在应用程序中实现更为精确和健壮的错误捕获与处理逻辑。

开发与社区贡献

若您对 tzst 项目的后续开发抱有兴趣,或希望贡献代码,诚邀您访问项目的 GitHub 仓库README.md 文件中包含了详细的开发环境配置说明、测试执行步骤以及代码质量保障措施等信息。

tzst 当前版本为 0.2.0

结语

tzst 的发布代表了本人在开源领域贡献的一项初步尝试。衷心希望此工具能为广大的 Python 开发者在处理 .tar.zst 格式文件时提供实质性的便利。欢迎各位试用 tzst,并期待任何形式的建议、反馈。若在使用过程中遇到任何问题,请不吝通过 GitHub Issues 提出。

感谢您的关注。



Xi_Xu
4 声望1 粉丝