我正在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)
答案 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文件,而是下载文件。