用Python整理tar bz2文件中的文件

3 投票
2 回答
1053 浏览
提问于 2025-04-16 02:51

我有大约20万个文本文件,这些文件被放在一个bz2压缩文件里。我的问题是,当我扫描这个bz2文件以提取我需要的数据时,速度非常慢。它必须遍历整个bz2文件才能找到我想要的那个文件。有没有什么办法可以加快这个过程呢?

另外,我想过可能可以把文件在tar.bz2里进行整理,这样我就可以让它知道该去哪里找。有没有办法对放进bz2的文件进行整理呢?

更多信息/编辑:我需要对每个文本文件在压缩文件中进行查询。有没有更好的压缩方法,可以支持这么多文件,并且压缩效果也很好?

2 个回答

0

Bzip2 是一种压缩工具,它默认会把数据分成比较大的块来压缩,通常是 900 KiB。为了加快扫描 tar 文件的速度,有一种方法是把每个文件单独压缩,然后再把这些压缩后的文件打包成一个 tar 文件。这样做虽然会降低压缩效果,但可以大大提高查找速度。这其实就是 Zip 格式文件的工作原理,只不过 Zip 使用的是 zlib 压缩,而不是 bzip2。这样一来,你就可以很方便地查看 tar 文件的索引,只需解压你需要的特定文件。

不过,我觉得大多数 tar 程序在组织文件方面的功能并不强大,虽然你可以为你的特殊需求写一个程序来实现这个功能(我知道 Python 有一些可以写 tar 文件的库,虽然我只用过一两次)。但是,你仍然会面临一个问题,就是在找到你想要的文件之前,可能需要先解压大部分的数据。

6

你一定要用bzip2吗?看它的说明文档,可以很清楚地看到,它并不是为了支持随机访问而设计的。也许你应该选择一种更符合你需求的压缩格式。老牌的Zip格式就支持随机访问,不过压缩效果可能会差一些。

撰写回答