如何直接将.npy文件写入s3?

use*_*121 5 python numpy amazon-s3

我想知道是否有任何方法可以将数组作为numpy文件(.npy)直接写入AWS S3存储桶。我可以np.save用来将文件保存在本地,如下所示。但是我正在寻找一种解决方案,可以将其直接写入S3,而无需先保存在本地。

a = np.array([1, 2, 3, 4])
np.save('/my/localfolder/test1.npy', a)
Run Code Online (Sandbox Code Playgroud)

M1L*_*L0U 6

如果您想绕过本地磁盘并将数据直接上传到云端,您可能需要使用pickle而不是使用.npy文件:

import boto3
import io
import pickle

s3_client = boto3.client('s3')

my_array = numpy.random.randn(10)

# upload without using disk
my_array_data = io.BytesIO()
pickle.dump(my_array, my_array_data)
my_array_data.seek(0)
s3_client.upload_fileobj(my_array_data, 'your-bucket', 'your-file.pkl')

# download without using disk
my_array_data2 = io.BytesIO()
s3_client.download_fileobj('your-bucket', 'your-file.pkl', my_array_data2)
my_array_data2.seek(0)
my_array2 = pickle.load(my_array_data2)

# check that everything is correct
numpy.allclose(my_array, my_array2)
Run Code Online (Sandbox Code Playgroud)

文档:

  • @user1725306您可以使用 [io.BytesIO](https://docs.python.org/3/library/io.html#io.BytesIO) 而不是文件 (2认同)