Python:读取多个文件时如何处理损坏的gzip文件

我正在读取一大堆gzip文件。当我尝试以下代码时,该过程无法完成,因为某些文件已损坏。 Python可以打开那些损坏的文件,但是由于这些文件中某些行的错误,该过程被中断了。

    for file in files:
        try:
            fin=gzip.open(file,'rb')
        except:
            continue
        
        for line in fin:
            try:
                temp=line.decode().split(",")
                a,b,c,d=temp[0],int(temp[1]),int(temp[2]),int(temp[3])
            except:
                continue

但是程序由于以下错误而停止。 处理损坏的gzip文件的最佳方法是什么?

Traceback (most recent call last):---------------------------| 9.0% Complete
  File "/opt/anaconda3/lib/python3.7/gzip.py",line 374,in readline
    return self._buffer.readline(size)
  File "/opt/anaconda3/lib/python3.7/_compression.py",line 68,in readinto
    data = self.read(len(byte_view))
  File "/opt/anaconda3/lib/python3.7/gzip.py",line 463,in read
    if not self._read_gzip_header():
  File "/opt/anaconda3/lib/python3.7/gzip.py",line 411,in _read_gzip_header
    raise OSError('Not a gzipped file (%r)' % magic)
OSError: Not a gzipped file (b'rv')

我修改了以下代码,看起来运行良好,但是不确定这是否是处理此类情况的最佳方法。 因为在某些情况下,该程序似乎没有终止(我需要测试更多)。

    for file in files:
        try:
            fin=gzip.open(file,'rb')
        except:
            continue
        
        line=True
        while line:
            try:
                line=fin.readline()
            except:
                continue
            try:
                temp=line.decode().split(",int(temp[3])
            except:
                continue

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...