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

时间:2018-09-11 12:32:43

标签: python append compression tarfile

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

  

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

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

我的问题是:为什么一定要这么复杂?您是否有任何理由可以想到开发人员为何决定在代码中不包括压缩附加模式?

1 个答案:

答案 0 :(得分:2)

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

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

要使用tar文件执行此操作,您还需要跟踪未压缩的.tar流中的终止块并进行覆盖,并每次都添加新的终止块。

可以这样做,但是要正确处理每种压缩数据格式,都需要特别注意。如果做错了,并且经常使用,结果在时间和压缩率上都将非常低效。