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

我需要为我正在编写的新应用程序提出一种文件格式。 该文件将需要保存一堆其他文本文件,这些文件主要是文本,但也可以是其他格式。 自然地,压缩的 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 等.

谢谢, ~埃里克

最佳答案

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

在 Python 中,您可以使用 zipfile .

https://stackoverflow.com/questions/3002196/

相关文章:

apache - 在 ReverseProxy 上下文中切换 SSLVerifyClient

ruby-on-rails - rails : Expected helper to define

open-source - 用于检测运行笔迹的开源

git - 如何使用 ssh 将 repo 克隆到远程服务器

c# - 以特定时间间隔从视频(mpg、wmv 等)中捕获帧

asp.net-mvc - ASP.Net MVC 2.0 : unescaping URL que

modeling - Data Vault 模型什么时候是数据仓库的正确模型?

sql - 对于每个唯一的 A 列,什么 SQL 查询返回具有最新日期和时间(B 列和 C 列)的行

sql-server - SQL 错误 : Verify that the instance nam

python - python 中的 Rfc 1123