tzst:我的首个 PyPI 项目——高效处理 Zstandard 压缩归档

简介: `tzst` 是一个专注于简化 `.tzst` 和 `.tar.zst` 文件创建与管理的 Python 库,基于高性能 Zstandard 压缩算法。它提供命令行工具和 Python API,支持高压缩比、快速解压、跨平台运行及灵活解压选项。通过 `pip install tzst` 即可安装,适用于高效归档和数据处理场景。欢迎试用并反馈!

本人荣幸地宣布,我的首个 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 提出。

感谢您的关注。


目录
相关文章
|
存储 缓存 监控
iOS 底层原理39:Instruments系列(一)Instruments介绍
iOS 底层原理39:Instruments系列(一)Instruments介绍
2694 0
iOS 底层原理39:Instruments系列(一)Instruments介绍
|
11月前
|
人工智能 IDE 定位技术
AI IDE正式上线!通义灵码开箱即用
作为AI原生的开发环境工具,通义灵码AI IDE深度适配了最新的千问3大模型,并全面集成通义灵码插件能力,具备编程智能体、行间建议预测、行间会话等功能。
1229 13
|
存储 算法 NoSQL
Zstandard (zstd)压缩算法在JAVA上的使用
Zstandard (zstd)压缩算法在JAVA上的使用
2601 0
|
6月前
|
存储 算法
算法入门:专题一:双指针(有效三角形的个数)
给定一个数组,找出能组成三角形的三元组个数。利用“两边之和大于第三边”的性质,先排序,再用双指针优化。固定最大边,左右指针从区间两端向内移动,若两短边之和大于最长边,则中间所有组合均有效,时间复杂度由暴力的O(n³)降至O(n²)。
|
11月前
|
Linux 编译器 开发工具
提升CentOS 7中的gcc/G++版本
至此,你已经成功在CentOS 7中升级了gcc/G++版本。从现在开始,在终端中运行 `gcc`或 `g++`时,将会使用新版本的编译器。
1443 21
|
机器学习/深度学习 人工智能 自然语言处理
通古大模型:古籍研究者狂喜!华南理工开源文言文GPT:AI自动断句+写诗翻译,24亿语料喂出来的学术神器
通古大模型由华南理工大学开发,专注于古籍文言文处理,具备强大的古文句读、文白翻译和诗词创作功能。
2666 11
通古大模型:古籍研究者狂喜!华南理工开源文言文GPT:AI自动断句+写诗翻译,24亿语料喂出来的学术神器
|
存储 分布式计算 OLAP
Apache Paimon统一大数据湖存储底座
Apache Paimon,始于Flink Table Store,发展为独立的Apache顶级项目,专注流式数据湖存储。它提供统一存储底座,支持流、批、OLAP,优化了CDC入湖、流式链路构建和极速OLAP查询。Paimon社区快速增长,集成Flink、Spark等计算引擎,阿里巴巴在内部广泛应用,旨在打造统一湖存储,打通Serverless Flink、MaxCompute等,欢迎大家扫码参与体验阿里云上的 Flink+Paimon 的流批一体服务。
21162 8
Apache Paimon统一大数据湖存储底座
|
安全 Java 开发者
JDK 21中的Switch模式匹配:一种更强大且灵活的分支选择机制
本文深入探讨了JDK 21中引入的Switch模式匹配的新特性。这种新的模式匹配机制不仅简化了传统的switch语句,还引入了类型检查和模式匹配,使得代码更加简洁、易读且功能强大。本文将详细介绍Switch模式匹配的语法、使用场景以及与传统switch语句的区别,并通过示例代码展示其在实际开发中的应用。
2504 0
|
安全 API 数据安全/隐私保护
PyMuPDF 1.24.4 中文文档(一)(3)
PyMuPDF 1.24.4 中文文档(一)
632 2