从损坏的GZ中提取文件

我的代码片段可以从GZ中提取文件,并将其保存为.txt文件,但有时该文件可能包含一些会导致崩溃提取模块的奇怪文本。从损坏的GZ中提取文件

Some Gibberish from file:

方法我用:

def unpackgz(name ,path): 

file = path + '\\' +name

outfilename = file[:-3]+".txt"

inF = gzip.open(file, 'rb')

outF = open(outfilename, 'wb')

outF.write(inF.read())

inF.close()

outF.close()

我的问题我该怎么去解决这个?可能与类似,其中open(文件,错误='ignore')为fil:。因为用这种方法,我只能提取健康的文件。

编辑到第一个问题

def read_corrupted_file(filename): 

with gzip.open(filename, 'r') as f:

for line in f:

try:

string+=line

except Exception as e:

print(e)

return string

newfile = open("corrupted.txt", 'a+')

cwd = os.getcwd()

srtNameb="service"+str(46)+"b.gz"

localfilename3 = cwd +'\\'+srtNameb

newfile.write(read_corrupted_file(localfilename3))

结果在多个错误: Like This

固定到工作状态:

def read_corrupted_file(filename): 

string=''

newfile = open("corrupted.txt", 'a+')

try:

with gzip.open(filename, 'rb') as f:

for line in f:

try:

newfile.write(line.decode('ascii'))

except Exception as e:

print(e)

except Exception as e:

print(e)

cwd = os.getcwd()

srtNameb="service"+str(46)+"b.gz"

localfilename3 = cwd +'\\'+srtNameb

read_corrupted_file(localfilename3)

print('done')

回答:

一般来说,如果该文件已损坏,然后它会抛出尝试解压文件时出错,没有多少可以简单地对s进行操作直到获得数据,但如果你只是想阻止它崩溃,你可以使用try catch。

try: 

pass

except Exception as error:

print(error)

运用这一逻辑,你可以通过阅读用gzip线线,与一试例外,之后,还在读书的下一行,当它击中损坏的部分。

import gzip 

with gzip.open('input.gz','r') as f:

for line in f:

print('got line', line)

以上是 从损坏的GZ中提取文件 的全部内容, 来源链接: utcz.com/qa/258614.html

回到顶部