2010-08-16 67 views
3

我有大約200,000個放置在bz2文件中的文本文件。我遇到的問題是,當我掃描bz2文件以提取我需要的數據時,它非常緩慢。它必須查看整個bz2文件來細化我正在尋找的單個文件。無論如何加快這一點?使用python組織tar bz2文件中的文件

此外,我想可能組織tar.bz2中的文件,所以我可以讓它知道在哪裏看。無論如何組織文件放入bz2?

更多信息/編輯: 我需要查詢每個文本文件的壓縮文件。是否有更好的壓縮方法支持如此大量的文件並被徹底壓縮?

+0

您是否正在尋找一種使用Python的方法?或者你會用其他方法嗎? – 2010-08-16 14:30:37

+0

Python。(需要更長) – xZel 2010-08-16 16:01:15

回答

6

您是否必須使用bzip2?閱讀它的documentation,這很清楚它不是爲支持隨機訪問而設計的。也許你應該使用更符合你的要求的壓縮格式。良好的舊Zip格式支持隨機訪問,但可能會壓縮更糟糕的,當然。

+0

是的,我正要寫相同的評論。 – Eike 2010-08-16 14:31:38

+0

7zip是壓縮比bzip2更好且具有python綁定的另一種替代方法。我不知道它支持隨機訪問的效果如何。 – Gilles 2010-08-16 14:37:56

+0

7zip只是bzip2或LZMA的容器 - 我認爲它嘗試了幾種算法,並使用最好的結果。 – katrielalex 2010-08-16 14:40:34

0

Bzip2壓縮成大塊(我相信默認爲900 KiB)。一種可以大幅加快tar文件掃描速度的方法,但是會降低壓縮性能,將分別壓縮每個文件,然後將結果集中在一起。這實質上就是Zip格式的文件(儘管使用zlib壓縮而不是bzip2)。但是,您可以輕鬆獲取tar索引,只需解壓縮您正在查找的特定文件即可。

我不認爲大多數tar程序提供了很多能夠以任何有意義的方式組織文件,雖然你可以編寫一個程序來爲你的特殊情況做到這一點(我知道Python有tar編寫庫,儘管我只有使用它們一次或兩次)。然而,在你找到你想要的東西之前,你仍然需要解壓縮大部分數據。