2010-06-08 63 views
2

我需要为我正在编写的新应用程序提供一种文件格式。 这个文件需要保存大部分文本,但也可以是其他格式的其他文本文件。 当然,压缩的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等等。

感谢, 〜埃里克

+0

“我需要为我写的新应用程序提供一个文件格式。”是如此明显错误,没有别的事情。祝你好运。 – msw 2010-06-09 00:24:46

+1

@msw,考虑到问题的上下文(包括“是否有其他存档格式可以让我快速访问我所需的内容”),显然他并不急于发明新的压缩格式。 – 2010-06-09 00:36:15

回答

2

ZIP似乎是适合您的情况。文件被单独压缩,这意味着你可以访问它们而不需要流过以前的所有内容

在Python中,您可以使用zipfile

+0

感谢您的想法。我明天将会发布它,看看这是如何解决性能问题(快速访问)并查看zip如何叠加在压缩焦油上。 – 2010-06-09 00:41:31