压缩存档,可快速访问单个文件

时间:2010-06-08 23:50:04

标签: python file-format archive tar

我需要为我正在编写的新应用程序提出一种文件格式。 这个文件需要包含一大堆其他文本文件,这些文本主要是文本,但也可以是其他格式。 当然,压缩的tar文件似乎符合要求。 问题是我希望能够非常快速地从文件中检索一些数据,并且从tar.gz文件中获取一个特定文件似乎需要更长的时间。我假设这是因为它必须解压缩整个文件,即使我只想要一个。当我只有一个常规的未压缩tar文件时,我可以快速获得该数据。 让我们说我需要的文件叫做data.dat

例如命令......

tar -x data.dat -zf myfile.tar.gz

...比我想要的时间长得多。

MP3文件具有id3数据,jpeg文件具有exif数据,无需打开整个文件即可快速读取。 我希望我的data.dat文件以类似的方式可用。

我在想我可以将其保留为未压缩并与myfile.tar.gz中的其余文件分开 然后我可以创建一个data.dat和myfile.tar.gz的tar文件,然后希望能够更快地检索数据,因为它位于外部tar文件的头部并且是未压缩的。

这听起来不对吗?...将压缩的tar放在tar文件中?

基本上,我需要拥有一个存档类型的文件,可以快速访问一个特定文件。 Tar这样做很好,但我也希望压缩数据,一旦我这样做,我就不再能快速访问了。 还有其他存档格式可以让我快速访问吗?

作为旁注,这个应用程序将用Python编写。如果解决方案要求使用我自己的二进制格式重新发明轮子,我熟悉C并且在C中编写Python模块没有问题。想想我只是使用tar,dd,cat,gzip等等虽然

谢谢, 〜埃里克

1 个答案:

答案 0 :(得分:2)

ZIP似乎适合您的情况。文件是单独压缩的,这意味着您可以访问它们,而无需在之前的所有内容中流式传输。

在Python中,您可以使用zipfile