我有一个从URL获取文件并将其转换为OpenCV图像的方法
def my_method(self, imgurl):
req = urllib.urlopen(imgurl)
r = req.read()
arr = np.asarray(bytearray(r), dtype=np.uint8)
image = cv2.imdecode(arr,-1) # 'load it as it is'
return image
我想使用boto3从s3存储桶访问一个对象并将其转换为图像就像上面的方法一样。但是,我不知道如何使用boto3从存储桶访问项目,然后进一步了解该项目的read()
内容。
以下是我尝试的内容
>>> import botocore
>>> import boto3
>>> client = boto3.client('s3',aws_access_key_id="myaccsskey",aws_secret_access_key="secretkey")
>>> bucketname = "mybucket"
>>> itemname = "demo.png"
问题
read
my_method
是否可以req.read()
访问项目的内容与# use selenium to start Chrome session to open a certain page
dr = webdriver.Chrome()
dr.get("http://www.google.com")
中的内容类似?答案 0 :(得分:4)
我会这样做 1 :
import boto3
s3 = boto3.resource('s3',
use_ssl=False,
endpoint_url="http://localhost:4567",
aws_access_key_id="",
aws_secret_access_key="",
)
obj = s3.Object(bucketname, itemname)
对于 2 ,我从未尝试this SO answer建议:
body = obj.get()['Body'].read()
使用ressource
提议的高级boto3
。