为什么tarfile模块不允许压缩追加?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么tarfile模块不允许压缩追加?相关的知识,希望对你有一定的参考价值。

没有直接的方法可以附加到压缩的tar存档。作为documentation states

请注意,'a:gz''a:bz2''a:xz'是不可能的。

作为一种解决方法,您可以使用未压缩的附加模式'a'然后自己处理压缩和解压缩,或者您可以自己处理附加并使用压缩的读/写模式重新创建tar存档。

我的问题是:为什么它必须这么复杂?您是否有任何理由可以考虑为什么开发人员会决定不在代码中包含压缩附加模式?

答案

因为它很难,特别是如果你希望它在附加小文件时仍能很好地压缩。

您可以查看gzlog,了解如何有效地将小字符串附加到gzip文件。它会将它们解压缩,直到达到阈值,此时压缩未压缩的数据。每次追加后,您都有一个有效的gzip文件。

要使用tar文件执行此操作,您还需要跟踪未压缩的.tar流中的终止块并将其写入,每次都附加新的终止块。

它可以完成,但需要特别注意每种压缩数据格式才能正确完成。如果做错了,如果频繁使用,结果在时间和压缩比方面都会非常低效。

以上是关于为什么tarfile模块不允许压缩追加?的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu 中导 tarfile,win 不亲切

Python中使用tarfile压缩解压tar归档文件示例(最新+全面=强烈推荐! ! !)

tar 常用语法

使用 tarfile (Python) 仅压缩给定目录中的文件

linux运维 .文本处理工具

使用tarfile(Python)仅压缩给定目录中的文件