我还没有找到明确的解决方案,因此希望这个问题将来对其他人有用。
基本上我正在创建一个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()
我需要rb,因为没有它,我将得到'utf-8'编解码器,无法解码位置0的字节0x89:无效的起始字节。最后一段代码返回的二进制代码不确定我下一步应该做什么。
答案 0 :(得分:0)
我解决了这个问题。我没有关闭h5py文件。一个需要添加
file_to_save.close()
上传到AWS之前