直接从S3 StreamingBody读取npy文件

时间:2017-08-22 20:22:15

标签: python json numpy amazon-s3

我在s3中保存了很多.npy(numpy)和.json文件,我需要下载并加载这些文件。

对于json文件,我正在使用以下代码下载文件并加载到字典中:

imageView.setSupportBackgroundTintList(ContextCompat.getColorStateList(this, R.color.colorBlue));

这样我就避免将.json文件写入磁盘并读取它。

现在我想对.npy文件做同样的事情,相同的是什么?

目前我正在下载文件,保存到磁盘上的临时文件并使用obj = s3.Object(bucket, key) response = obj.get() body = response['Body'].read().decode('utf-8') data = json.loads(body) 加载,但如果可能的话,我希望避免这种情况。

2 个答案:

答案 0 :(得分:1)

正确的回答应该是:

numpy_image = np.fromstring(s3_object.get()['Body'].read(), np.uint8)

如果你想从中获取图像,你可以像下面的例子一样使用 cv2:

image = cv2.imdecode(numpy_image, cv2.IMREAD_COLOR)

答案 1 :(得分:0)

关注https://stackoverflow.com/a/28196540/3509999

obj = s3.Object(bucket, key)
with io.BytesIO(obj.get()["Body"].read()) as f:
    # rewind the file
    f.seek(0)
    arr = np.load(f)