我正在读取一大堆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