从损坏的GZ中提取文件

2024-09-27 07:21:14 发布

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

我的代码片段可以从GZ中提取文件作为另存为.txt文件,但有时该文件可能包含一些奇怪的文本,从而导致提取模块崩溃。在

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(file,errors='ignore')作为fil:。因为用这种方法我只能提取健康的文件。在

编辑到第一个问题

^{pr2}$

导致多个错误: 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')

Tags: 文件path方法nametxtreaddefas
1条回答
网友
1楼 · 发布于 2024-09-27 07:21:14

一般来说,如果文件被破坏,那么它将抛出一个错误,试图解压文件,没有什么可以做的只是仍然得到数据,但如果你只是想停止它崩溃,你可以使用try-catch。在

try:
  pass
except Exception as error:
  print(error)

应用此逻辑,您可以使用gzip逐行读取,但有一个try异常,在它遇到损坏的部分时仍然读取下一行。在

^{pr2}$

相关问题 更多 >

    热门问题