用python打开损坏的tar文件

时间:2019-03-16 09:24:12

标签: python corrupt tarfile

我正在python的帮助下从ftp服务器下载tar文件。但是,现在我遇到了问题,并出现错误“ ReadError:数据意外结束”。我认为我的文件已损坏。我可以在终端内使用注释“ wget”打开python外的文件,但是我只想坚持使用python。这是我的代码:

os.chdir(aod_ipng)
[urlretrieve('%s%s'%(url_ipng,x),'%s'%(x)) for x in ari]

for i in range(len(ari)):
    fileName = '%s'%(ari[i])
    ind = save_ipng[i].index('IVAOT')
    h5f = save_ipng[i][ind:]
    tfile = tarfile.open(fileName,'r|')
    for t in tfile:
        if t.name == '%s'%h5f:
            f = tfile.extract(t)
  • ari是一个字符串数组,其中包含需要下载的tar文件的多个名称。
  • h5f是需要从tar文件中提取的特定h5.gz文件的名称 让我知道您是否需要有关我的代码的更多信息!

2 个答案:

答案 0 :(得分:0)

通过错误的连接可靠地下载大文件并不容易。如果支持http range请求,则可以在断开的连接上继续下载。

一个好的开始是使用请求库和read the remote file as a stream。 但是,断开连接和恢复连接仍可能需要由您处理。

有关如何使用该API的信息,请参见this question

但是请确保该文件确实是tar。您可以使用libmagic进行文件格式检测。

该文件扩展名表明是gzip而不是tar。

import gzip
f = gzip.open('h5.gz', 'rb')
file_content = f.read()
f.close()

答案 1 :(得分:-1)

“ ReadError:数据意外结束”

这意味着您的文件比预期的要短,因此未完全下载。

wget不打开tar文件,而是下载文件。