Python无法读取“warc.gz公司“完全归档

2024-04-30 02:55:11 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的工作中,我会把网站收集起来,然后把它们写到gzip压缩的web档案中(带扩展名)warc.gz公司"). 我使用python2.7.11和warc0.2.1库。在

我注意到,对于大多数文件,我不能完全阅读它们与warc库。例如,如果warc.gz公司档案里有517条记录,我只能读大约200条。在

经过一番研究,我发现这个问题只发生在gzip文件上。扩展名为“warc”的文件不存在此问题。在

我发现有些人也有这个问题(https://github.com/internetarchive/warc/issues/21),但没有找到解决办法。在

我想Python2.7.11中的“gzip”中可能有一个bug。也许有人有这方面的经验,知道如何解决这个问题吗?在

提前谢谢!在

示例:

我创造新的warc.gz公司像这样的文件:

import warc
warc_path = "\\some_path\file_name.warc.gz"
warc_file = warc.open(warc_path, "wb")

要写我使用的记录:

^{pr2}$

这创造了完美”warc.gz公司“文件。他们没有问题。所有,包括“\r\n”都是正确的。但问题是从我读这些文件开始的。在

要读取我使用的文件:

warc_file = warc.open(warc_path, "rb")

要循环查看我使用的记录:

for record in warc_file:
    ...

问题是在循环过程中并没有找到所有的记录“warc.gz公司“文件,而它们都是为“warc”文件找到的。在warc库中处理这两种类型的文件。在


Tags: 文件pathhttpsgithubweb网站记录公司
1条回答
网友
1楼 · 发布于 2024-04-30 02:55:11

似乎^{}中的自定义gzip处理、使用^{}进行文件拆分和在{a3}中读取的自定义gzip被整体打破(使用python 2.7.9、2.7.10和2.7.11进行了测试)。它在receives no data instead of a new header时停止。在

基本stdlib ^{}似乎可以很好地处理连锁文件,因此这应该也可以:

import gzip
import warc

with gzip.open('my_test_file.warc.gz', mode='rb') as gzf:
    for record in warc.WARCFile(fileobj=gzf):
        print record.payload.read()

相关问题 更多 >