当前位置: 首页 > 知识库问答 >
问题:

从S3存储桶下载图像并存储在非本地变量(boto3)中

谯德元
2023-03-14

我想从桶S3下载一个图像并存储在变量中,而不是在我的本地电脑中,我怎么做?

我使用此代码存储在本地:

BUCKET_NAME = 'mybucket' 
KEYFILE = 'myImage.jpg' 

try:
    s3.Bucket(BUCKET_NAME).download_file(KEYFILE, 'myImageInLocal.jpg')          
except botocore.exceptions.ClientError as e:
    if e.response['Error']['Code'] == "404":
        print("The object does not exist.")
    else:
        raise

共有2个答案

曹兴贤
2023-03-14

也许你可以试试BytesIO()

import io
image_data = io.BytesIO()

在你的尝试区

s3.Bucket(BUCKET_NAME).download_file(KEYFILE, image_data)  

因此,image_data是一个变量,它应该以字节格式显示图像。

艾奕
2023-03-14

您可以下载到BytesIO变量与download_fileobj:

from io import BytesIO

BUCKET_NAME = 'mybucket' 
KEYFILE = 'myImage.jpg' 

s3_file = BytesIO()

try:
    s3.Bucket(BUCKET_NAME).download_fileobj('myImageInLocal.jpg', s3_file)          
except botocore.exceptions.ClientError as e:
    if e.response['Error']['Code'] == "404":
        print("The object does not exist.")
    else:
        raise
 类似资料:
  • 有没有一种方法可以将文件列表从一个S3存储桶复制到另一个存储桶?两个S3存储桶都在同一个AWS帐户中。我可以使用aws cli命令一次复制一个文件: 然而,我有1000份文件要复制。我不想复制源存储桶中的所有文件,因此无法使用sync命令。有没有一种方法可以用需要复制的文件名列表来调用一个文件,从而自动化这个过程?

  • 问题内容: 我这样做是读取了S3存储桶中的文件名 现在,我需要获取文件的实际内容,类似于。什么是最好的方法? 问题答案: boto3提供了一种资源模型,该资源模型使诸如迭代对象之类的任务变得更加容易。不幸的是,StreamingBody不提供或。

  • 使用Boto3,python脚本从S3桶中下载文件以读取它们,并将下载文件的内容写入名为的文件。 我的问题是,一旦脚本使用AWS Lambda函数,它将如何以相同的方式工作?

  • 问题内容: 我想知道boto3中是否存在密钥。我可以循环存储桶中的内容并检查密钥是否匹配。 但这似乎更长了,而且太过分了。Boto3官方文档明确说明了如何执行此操作。 可能是我缺少明显的东西。有人可以指出我如何实现这一目标。 问题答案: Boto 2的对象曾经有一种方法,该方法通过执行HEAD请求并查看结果来检查密钥是否在S3上存在,但似乎不再存在。您必须自己做: 对单个键执行HEAD请求,这是快

  • 我需要从一个URL加载图像,并将它们存储在本地,这样它们就不必反复重新加载。我有一个扩展我正在工作: 我遇到了一个问题,UIImagePNGRepresentation中的“loadedImage”返回时出现错误“use of unresolved identifier loadedImage”。我的目标是在本地存储图像的PNG表示。对此错误的任何建议将不胜感激。

  • 问题内容: 我想将生成的图像存储在变量中,以将其用作嵌入式图像。 这些功能都不适合我的用例: -将其写入标准输出。这确实有帮助..因为我必须将图像嵌入html文件中。 /从命令行执行时不执行任何操作 问题答案: 您尝试过还是等效的?