Ala*_*air 13 python amazon-s3 boto3
在boto3中,有没有相当于get_contents_to_file,将对象的内容复制到文件句柄?
在boto中,如果我有一个S3对象key,我可以将内容复制到一个临时文件中:
from tempfile import TemporaryFile
key = code_that_gets_key()
with TemporaryFile() as tmp_file:
key.get_contents_to_file(key, tmpfile)
Run Code Online (Sandbox Code Playgroud)
我还没有找到boto3中的等价物.
我已经能够替换使用get_contents_to_filename了download_file.但是,这涵盖了我提供文件名的情况.在这种情况下,我想提供文件句柄作为参数.
目前,我可以通过遍历正文来获取代码在boto3中工作,如下所示:
with TemporaryFile() as tmp_file:
body = key.get()['Body']
for chunk in iter(lambda: body.read(4096), b''):
filehandle.write(chunk)
Run Code Online (Sandbox Code Playgroud)
在boto3中有更好的方法吗?
Pet*_*ain 12
从V1.4.0开始,有一个download_fileobj功能可以完全满足您的需求.根据正式文件:
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('mybucket')
obj = bucket.Object('mykey')
with open('filename', 'wb') as data:
obj.download_fileobj(data)
Run Code Online (Sandbox Code Playgroud)
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('mybucket')
with open('filename', 'wb') as data:
bucket.download_fileobj('mykey', data)
Run Code Online (Sandbox Code Playgroud)