使用 python 打开损坏的 tar 文件
open corrupt tar file with python
我正在 python 的帮助下从 ftp 服务器下载 tar 文件。但是,现在我遇到了问题并收到错误 "ReadError: unexpected end of data"。我假设我的文件已损坏。我可以在终端内使用 '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文件的名称
如果您需要有关我的代码的更多信息,请告诉我!
"ReadError: unexpected end of data"
这意味着您的文件比预期的要短,因此没有完全下载。
wget
不打开 tar 个文件,它下载文件。
通过不良连接可靠地下载大文件并不容易。如果支持 http range 请求,那么您可以在断开的连接上恢复下载。
一个好的 start 是使用请求库和 read the remote file as a stream。
然而,断开连接和恢复可能仍需由您处理。
请参阅 this question 了解如何使用 API
但请确保该文件确实是 tar。您可以使用 libmagic 进行文件格式检测。
该文件扩展名建议使用 gzip 而不是 tar。
import gzip
f = gzip.open('h5.gz', 'rb')
file_content = f.read()
f.close()
我正在 python 的帮助下从 ftp 服务器下载 tar 文件。但是,现在我遇到了问题并收到错误 "ReadError: unexpected end of data"。我假设我的文件已损坏。我可以在终端内使用 '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文件的名称 如果您需要有关我的代码的更多信息,请告诉我!
"ReadError: unexpected end of data"
这意味着您的文件比预期的要短,因此没有完全下载。
wget
不打开 tar 个文件,它下载文件。
通过不良连接可靠地下载大文件并不容易。如果支持 http range 请求,那么您可以在断开的连接上恢复下载。
一个好的 start 是使用请求库和 read the remote file as a stream。 然而,断开连接和恢复可能仍需由您处理。
请参阅 this question 了解如何使用 API
但请确保该文件确实是 tar。您可以使用 libmagic 进行文件格式检测。
该文件扩展名建议使用 gzip 而不是 tar。
import gzip
f = gzip.open('h5.gz', 'rb')
file_content = f.read()
f.close()