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介绍
2772 0
iOS 底层原理39:Instruments系列(一)Instruments介绍
|
Web App开发 PHP Apache
手把手教你用owncloud搭建属于自己的云盘
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 owncloud是一个开源的云盘解决方案,我们可以用owncloud快速地搭建起我们自己私有的云盘,这样文件地安全性和云盘地可靠性都有保证,对于公司和个人都是非常有用的。
9241 0
|
6月前
|
人工智能 JSON 移动开发
AI 试衣服从“娱乐玩具”到真正可商用的能力进化
玩美移动AI Clothes技术专攻商业级虚拟试衣,突破通用大模型局限,实现服装结构精准还原、多体型真实适配、只换衣不换人。支持电商、APP快速集成,推动AI试衣从娱乐走向高转化零售应用。
966 0
|
存储 分布式计算 OLAP
Apache Paimon统一大数据湖存储底座
Apache Paimon,始于Flink Table Store,发展为独立的Apache顶级项目,专注流式数据湖存储。它提供统一存储底座,支持流、批、OLAP,优化了CDC入湖、流式链路构建和极速OLAP查询。Paimon社区快速增长,集成Flink、Spark等计算引擎,阿里巴巴在内部广泛应用,旨在打造统一湖存储,打通Serverless Flink、MaxCompute等,欢迎大家扫码参与体验阿里云上的 Flink+Paimon 的流批一体服务。
21511 8
Apache Paimon统一大数据湖存储底座
|
机器学习/深度学习 人工智能 自然语言处理
通古大模型:古籍研究者狂喜!华南理工开源文言文GPT:AI自动断句+写诗翻译,24亿语料喂出来的学术神器
通古大模型由华南理工大学开发,专注于古籍文言文处理,具备强大的古文句读、文白翻译和诗词创作功能。
3015 11
通古大模型:古籍研究者狂喜!华南理工开源文言文GPT:AI自动断句+写诗翻译,24亿语料喂出来的学术神器
|
SQL 分布式计算 流计算
官宣|Apache Paimon 1.0 发布公告
官宣|Apache Paimon 1.0 发布公告
984 8
|
消息中间件 SQL Kubernetes
DotNet.CAP,或是.NET唯一靠谱的开源分布式框架
DotNet.CAP,或是.NET唯一靠谱的开源分布式框架
1020 0
DotNet.CAP,或是.NET唯一靠谱的开源分布式框架
|
程序员 Python
【Quant102】 经典技术指标 Pandas 实现(第一部分)(2)
【Quant102】 经典技术指标 Pandas 实现(第一部分)
294 0