当前位置: 首页 > 面试题库 >

python-使用matplotlib和boto将图从内存上传到s3

卢出野
2023-03-14
问题内容

这是我的工作脚本,它生成图,将其本地保存到磁盘,上载到S3并删除文件:

plt.figure(figsize=(6,6))
plt.plot(x, y, 'bo')
plt.savefig('file_location')

conn = boto.s3.connect_to_region(
    region_name=AWS_REGION,
    aws_access_key_id=AWS_ACCESS_KEY_ID,
    aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
    calling_format=boto.s3.connection.OrdinaryCallingFormat()
    )
bucket = conn.get_bucket('bucket_name')
k = Key(bucket)
k.key = 'file_name'
k.set_contents_from_filename('file_location')

os.remove(file_location)

我想要的是跳过磁盘写入操作,直接从内存中上传绘图。

任何建议如何实现这一目标?


问题答案:

放在一起:

img_data = io.BytesIO()
plt.savefig(img_data, format='png')
img_data.seek(0)

s3 = boto3.resource('s3')
bucket = s3.Bucket(BUCKET_NAME)
bucket.put_object(Body=img_data, ContentType='image/png', Key=KEY)

感谢@ padraic-cunningham和@ guyb7的提示!



 类似资料:
  • 问题内容: 我在Python网络环境中工作,我可以使用boto的key.set_contents_from_filename(path / to / file)将文件从文件系统上传到S3。但是,我想上传已经在网络上的图像(例如https://pbs.twimg.com/media/A9h_htACIAAaCf6.jpg:large)。 我是否应该以某种方式将映像下载到文件系统,然后照常使用boto

  • 问题内容: 我想使用python复制s3存储桶中的文件。 例如:我的存储桶名称=测试。在存储桶中,我有2个文件夹名称为“ dump”和“ input”。现在,我想使用python将文件从本地目录复制到S3“转储”文件夹…有人可以帮助我吗? 问题答案: 尝试这个… [更新]我不是pythonist,所以感谢您对import语句的注意。另外,我不建议将凭证放在您自己的源代码中。如果您在AWS内部运行此

  • 问题内容: 我有一个长度为2.2亿(固定)的int和float数组。现在,我想将这些阵列存储到内存和磁盘/从内存和磁盘上载。目前,我正在使用Java NIO的FileChannel和MappedByteBuffer解决此问题。它可以正常工作,但大约需要5秒钟(Wall Clock Time)(用于将阵列存储到内存或从内存上载到磁盘或从磁盘上载到磁盘)。实际上,我想要一个更快的。有人可以帮我吗,有没

  • 我想用Python在s3 bucket中复制一个文件。

  • 问题内容: 我正在将文件从S3复制到Cloudfiles,并且我想避免将文件写入磁盘。Python- Cloudfiles库有一个object.stream()调用,看起来像我需要的,但我在boto中找不到等效的调用。我希望我能够做类似的事情: boto是否可以做到这一点(或者我猜想是否还有其他s3库)? 问题答案: boto中的Key对象代表S3中的对象,可以像迭代器一样使用,因此您应该可以执行

  • 问题内容: 这是我现在正在做的事情: 将文件写入磁盘,然后立即删除它们似乎是应该避免的系统额外工作。我可以使用Python将内存中的对象上传到FTP吗? 问题答案: 由于使用鸭式输入,因此文件对象(在您的代码中)仅需要支持与一起使用的调用。当遇到这样的问题时,我转到源代码,在本例中为lib / python2.6 / ftplib.py: 如前所述,它只需要一个类似文件的对象,实际上它甚至不需要,