Загрузка файла h5py в aws и загрузка его снова - PullRequest
0 голосов
/ 14 февраля 2019

Я не смог найти четкого решения, поэтому надеюсь, что этот вопрос пригодится другим в будущем.

В основном я создаю объект h5py следующим образом:

keys_d = [matrix_l2T.data, matrix_l2T.indices, matrix_l2T.indptr]
keys_n = ['data', 'indices', 'indptr' ]
file_to_save = h5py.File(FILENAME)
for i,j in zip(keys_n, keys_d):
    file_to_save.create_dataset(i, data = j)

Загрузка в AWS следующим образом:

s3 = boto3.client('s3')
s3.upload_file(Filename = FILENAME, Key = KEY, Bucket = BUCKET)

Загрузка следующим образом:

s3 = boto3.resource('s3')
try:
s3.Bucket(BUCKET_NAME).download_file(KEY, FILENAME) except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
    print("The object does not exist.")
else:
    raise

Затем я попытался открыть этот файл различными способами, но, похоже, это не так.выполняется без ошибок.

Я пытался:

h5py.File(FILENAME,'r')

И я получил:

OSError: Unable to open file (bad object header version number)

Я также пытался:

with open(FILENAME, 'rb') as f:
   a = f.read()

Мне нужен руб, потому чтобез этого я получаю кодек utf-8, который не может декодировать байт 0x89 в позиции 0: недопустимый начальный байт.Последний фрагмент кода возвращает двоичный код, который не совсем уверен, что мне делать дальше.

1 Ответ

0 голосов
/ 14 февраля 2019

Я решил проблему.Я не закрывал файл h5py.Нужно добавить

file_to_save.close()

перед загрузкой в ​​aws

...