是否可以在不使用boto3下载的情况下获取S3文件的内容?

问题描述 投票:6回答:2

我正在研究从Redshift数据库转储文件的过程,并且不希望本地下载文件来处理数据。我看到Java有一个StreamingObject类,做我想要的,但我没有看到任何类似的boto3

python amazon-s3 boto3
2个回答
13
投票

如果你有一个包含mybucket密钥的beer S3存储桶,下面是如何下载和获取值而不将其存储在本地文件中:

import boto3
s3 = boto3.resource('s3')
print s3.Object('mybucket', 'beer').get()['Body'].read()

0
投票

这可能与您想要做的事情有关,也可能没有,但对于我的情况,一件事运作良好的是使用tempfile:

import tempfile
import boto3
import PyPDF2

bucket_name = 'my_bucket'
s3 = boto3.resource('s3')
temp = tempfile.NamedTemporaryFile()
s3.Bucket(bucket_name).download_file(key_name, temp.name)
pdfFileObj = open(temp.name,'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
[... do what you will with your file ...]
temp.close()
© www.soinside.com 2019 - 2024. All rights reserved.