代码之家  ›  专栏  ›  技术社区  ›  eric.frederich

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

  •  2
  • eric.frederich  · 技术社区  · 15 年前

    我需要为我正在编写的新应用程序想出一个文件格式。 该文件将需要保存大量其他文本文件,这些文件主要是文本,但也可以是其他格式。 当然,压缩的tar文件似乎符合要求。 问题是,我希望能够非常快速地从文件中检索一些数据,并从tar中只获取一个特定的文件。gz文件似乎花费的时间比它应该花费的时间长。我假设这是因为它必须解压缩整个文件,即使我只想要一个。当我只有一个普通的未压缩的tar文件时,我可以很快地获取数据。 假设我需要的文件叫做数据。dat

    例如命令。。。

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

    ... 比我想象的要长得多。

    MP3文件有id3数据,jpeg文件有exif数据,可以在不打开整个文件的情况下快速读入。 我想要我的数据。dat文件将以类似的方式提供。

    我在想,我可以让它不压缩,并与myfile中的其他文件分离。焦油广州 然后我可以创建一个数据的tar文件。dat和myfile。焦油gz,然后希望能够更快地检索数据,因为它位于外部tar文件的头部,并且是未压缩的。

    这听起来对吗?。。。在tar文件中放入压缩tar?

    基本上,我需要的是一个存档类型的文件,可以快速访问一个特定的文件。 Tar做得很好,但我也想压缩数据,一旦压缩,我就不能快速访问。 是否有其他存档格式可以让我快速访问所需的内容?

    作为补充说明,这个应用程序将用Python编写。如果解决方案需要用我自己的二进制格式重新发明轮子,我熟悉C语言,用C语言编写Python模块也不会有问题。理想情况下,我只使用tar、dd、cat、gzip等。

    谢谢 ~z~埃里克

    1 回复  |  直到 15 年前
        1
  •  3
  •   Matthew Flaschen    15 年前

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

    在Python中,可以使用 zipfile .