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

Python 压缩存档,可快速访问单个文件,python,file-format,archive,tar,Python,File Format,Archive,Tar,我需要拿出一个新的应用程序,我写的文件格式。 该文件将需要保存大量其他文本文件,这些文件大部分是文本,但也可以是其他格式。 当然,压缩的tar文件似乎符合要求。 问题是,我希望能够非常快速地从文件中检索一些数据,而从tar.gz文件中仅获取一个特定的文件似乎需要更长的时间。我假设这是因为它必须解压缩整个文件,即使我只需要一个。当我只有一个普通的未压缩的tar文件时,我可以很快地获取数据。 假设我需要的文件名为data.dat 例如命令 tar -x data.dat -zf myfile.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等

谢谢,
~Eric

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


在Python中,您可以使用。

“我需要为我正在编写的新应用程序提供一种文件格式。”这显然是错误的,其他任何东西都无关紧要。祝你好运。@msw,考虑到问题的背景(包括“是否有其他存档格式可以让我快速访问所需内容”),很明显他并不急于发明一种新的压缩格式。谢谢你的建议。明天我将试一试,看看它在性能方面是如何工作的(快速访问),看看zip如何与gzip tar进行比较。