这是我的工作脚本,用于生成绘图,将其保存到本地磁盘,上载到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-3.x相关问答推荐

如何在matplotlib中显示次要刻度标签

使用递归将int转换为字符串

添加任意数量的 pandas 数据框

Pandas 转换为日期时间

平移数组

使用 Python 在特定组的列中设置上限

如何将列表和字典逐行组合在一起

XPATH:使用 .find_elements_by_xpath 为未知数量的 xpath 输入值

`pyspark mllib` 与 `pyspark ml` 包

ImportError:没有名为资源的模块

django rest框架中的save()、create()和update()有什么区别?

为什么 Django South 1.0 使用 iteritems()?

如何在 Python 中计算 cohen 的 d?

tensorflow 中 numpy.newaxis 的替代方案是什么?

为什么`multiprocessing.Queue.get`这么慢?

作为函数对象属性的 __kwdefaults__ 有什么用?

如何在 python 3.x 中禁用 ssl 判断?

TypeError:只有整数标量数组可以转换为标量索引

为什么变量 = 对象不像变量 = 数字那样工作

在 Ipython 中使用 Pylint (Jupyter-Notebook)