Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么tarfile模块不允许压缩追加?_Python_Append_Compression_Tarfile - Fatal编程技术网

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

Python 为什么tarfile模块不允许压缩追加?,python,append,compression,tarfile,Python,Append,Compression,Tarfile,没有直接的方法可以附加到压缩的tar存档中。作为: 请注意,'a:gz','a:bz2'或'a:xz'是不可能的 作为一种解决方法,您可以使用未压缩的附加模式'a',然后自己处理压缩和解压缩,也可以自己处理附加并使用压缩的读/写模式重新创建tar存档 我的问题是:为什么要这么复杂?你能想到为什么开发人员会决定不在代码中包含压缩的追加模式吗?因为这很难,特别是如果你想在追加小文件时仍能很好地压缩 您可以了解如何有效地将小字符串附加到gzip文件。它附加未压缩的数据,直到达到阈值,此时未压缩的数据被

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

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

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


我的问题是:为什么要这么复杂?你能想到为什么开发人员会决定不在代码中包含压缩的追加模式吗?

因为这很难,特别是如果你想在追加小文件时仍能很好地压缩

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

要对tar文件执行此操作,还需要跟踪未压缩的.tar流中的终止块,并对其进行写入,每次追加新的终止块


这是可以做到的,但需要特别注意每种压缩数据格式才能做到正确。如果做得不对,并且经常使用,结果在时间和压缩比上都会非常低效。

非常有趣。你的回答让我意识到我刚才问过你。我终于开始理解压缩背后的背景。非常感谢。