我有一个被压缩为7z格式的100GB文本文件。我可以通过以1MB块的方式读取(7z将数据输出到stdout)来查找其中的模式'hello'
:
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)
...
现在我们已经找到了模式'hello'
,假设它在第23456个块中,在7z文件内如何快速访问这个块或行?
(如果可能的话,不要将此数据保存在另一个文件/索引中)
使用7z
,如何在文件中间进行查找?
注意:我已经阅读了Indexing / random access to 7zip .7z archives和random seek in 7z single file archive,但这些问题没有讨论具体实现。
.7z
文件肯定有头部和文件表格在文件末尾,所以我几乎可以确定我们不能像这样简单地在中间寻找。 - Basj