没有直接的方法可以追加到压缩的 tar 存档中。作为文档状态 https://docs.python.org/3/library/tarfile.html#tarfile.open:
注意'a:gz'
, 'a:bz2'
or 'a:xz'
不可能。
作为解决方法,您可以使用未压缩的附加模式'a'
然后自己处理压缩和解压缩,或者您可以自己处理追加并使用压缩读/写模式重新创建 tar 存档。
我的问题是:为什么一定要这么复杂?您是否可以想到为什么开发人员决定不在代码中包含压缩附加模式?
因为这很困难,特别是如果您希望它在附加小文件时仍然可以很好地压缩。
你可以看看gzlog https://github.com/madler/zlib/blob/master/examples/gzlog.c了解如何有效地将小字符串附加到 gzip 文件。它以未压缩的方式附加它们,直到达到阈值,此时未压缩的数据将被压缩。每次追加后,您都会有一个有效的 gzip 文件。
要使用 tar 文件执行此操作,您还需要跟踪未压缩的 .tar 流中的终止块并覆盖它们,每次都附加新的终止块。
这是可以做到的,但需要特别注意每种压缩数据格式才能正确完成。如果做得错误并且频繁使用,结果在时间和压缩比上都会非常低效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)