открыть поврежденный tar-файл с помощью python - PullRequest
0 голосов
/ 16 марта 2019

Я загружаю tar-файлы с ftp-сервера с помощью python. Тем не менее, теперь я сталкиваюсь с проблемами и получаю ошибку «ReadError: неожиданный конец данных». Я предполагаю, что мой файл был поврежден. Я могу открыть файлы вне python с комментарием «wget» внутри терминала, однако я бы хотел придерживаться только 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 - это имя конкретного файла h5.gz, который необходимо извлечь из файла tar. Дайте мне знать, если вам нужна дополнительная информация о моем коде!

Ответы [ 2 ]

0 голосов
/ 17 марта 2019

Надежная загрузка больших файлов через плохие соединения не легка.Если поддерживаются http range запросы, вы можете возобновить загрузку при разрыве соединений.

Хорошим началом будет использование библиотеки запросов и чтение удаленного файла в виде потока .Однако отсоединения и возобновления могут все еще быть обработаны вами.

См. этот вопрос , чтобы узнать, как использовать этот API

Но, пожалуйста, убедитесь, что файл действительнодеготь.Вы можете использовать libmagic для определения формата файла.

Это расширение файла предполагает, что gzip не является tar.

import gzip
f = gzip.open('h5.gz', 'rb')
file_content = f.read()
f.close()
0 голосов
/ 16 марта 2019

«Ошибка чтения: неожиданный конец данных»

Это означает, что ваш файл короче, чем ожидалось, поэтому он загружен не полностью.

wget не открывает файлы tar, онскачивает файлы.

...