相关疑难解决方法(0)

在 7z 单文件存档中随机查找

是否可以对由 7zip 压缩的非常大的文件进行随机访问(大量搜索)?

原始文件非常大(999gb xml),我无法以解压格式存储它(我没有那么多可用空间)。因此,如果 7z 格式允许访问中间块而无需解压缩所选块之前的所有块,我可以构建块开头和相应原始文件偏移量的索引。

我的 7z 存档的标题是

37 7A BC AF 27 1C 00 02 28 99 F1 9D 4A 46 D7 EA  // 7z archive version 2;crc; n.hfr offset
00 00 00 00 44 00 00 00 00 00 00 00 F4 56 CF 92  // n.hdr offset; n.hdr size=44. crc
00 1E 1B 48 A6 5B 0A 5A 5D DF 57 D8 58 1E E1 5F
71 BB C0 2D BD BF 5A 7C A2 …
Run Code Online (Sandbox Code Playgroud)

compression wikipedia 7zip random-access

5
推荐指数
1
解决办法
2740
查看次数

7z 文件中的随机访问

我的 7z 存档中有一个 100 GB 的文本文件。我可以通过按 1 MB 块读取它来找到其中的模式'hello'(7z 将数据输出到 stdout):

Popen("7z e -so archive.7z big100gb_file.txt", stdout=PIPE)
while True:
    block = proc.stdout.read(1024*1024)    # 1 MB block
    i += 1
    ...
    if b'hello' in block:      # omitting other details for search pattern split in consecutive blocks...
        print('pattern found in block %i' % i)
    ...
Run Code Online (Sandbox Code Playgroud)

现在我们经过 5 分钟的搜索发现该模式'hello'位于第 23456 个块中,那么将来如何在 7z 文件中快速访问该块或行呢?

(如果可能,不要将此数据保存在另一个文件/索引中)

那么7z,如何在文件中间查找呢?

注意:我已经阅读了Indexing / random access to 7zip .7z archivesrandom search …

python compression 7zip random-access large-files

3
推荐指数
1
解决办法
520
查看次数