尝试在其中保存 matplotlib 饼图时,空文件被上传到 S3 存储桶

Nik*_*kov 4 matplotlib amazon-s3 python-3.x boto3

所以我想使用一些数据创建一个 matplotlib 饼图,然后将其保存到 BytesIO 并发送到我的 S3 存储桶以便稍后存储和使用这张图片。操作过程中没有出现错误,它已成功上传到我的 S3 上,名称正确,但文件大小为 0 并且完全为空,但如果我在上传之前通过 print() 检查,buf 不为空。

async def generate_pie_chart():
    slices = [33,33,33]
    fig = Figure()
    pie = fig.subplots()
    pie.pie(slices)

    buf = BytesIO()
    fig.savefig(buf, format="png")

    S3_CLIENT.upload_fileobj(buf, S3_BUCKET, 'piee')
Run Code Online (Sandbox Code Playgroud)

jel*_*csc 6

只需在上面添加以下行upload_fileobj()

buf.seek(0)
Run Code Online (Sandbox Code Playgroud)

它将“光标”移动到 BytesIO 的开头。当upload_fileobj()被调用时,它可以从文件的开头读取/上传。