我正在研究从Redshift
数据库转储文件的过程,并且不希望本地下载文件来处理数据。我看到Java
有一个StreamingObject
类,做我想要的,但我没有看到任何类似的boto3
。
如果你有一个包含mybucket
密钥的beer
S3存储桶,下面是如何下载和获取值而不将其存储在本地文件中:
import boto3
s3 = boto3.resource('s3')
print s3.Object('mybucket', 'beer').get()['Body'].read()
这可能与您想要做的事情有关,也可能没有,但对于我的情况,一件事运作良好的是使用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()