boto3 में, get_contents_to_file
के समतुल्य है, जो किसी ऑब्जेक्ट की सामग्री को फ़ाइल संभाल में कॉपी करता है?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)
मैं boto3 में एक समान नहीं मिली है।
मैं get_contents_to_filename
के download_file
के साथ उपयोग करने में सक्षम हूं। हालांकि, वह उस मामले को शामिल करता है जहां मैं फ़ाइल नाम प्रदान करता हूं। इस मामले में, मैं फ़ाइल हैंडल को तर्क के रूप में प्रदान करना चाहता हूं।
with TemporaryFile() as tmp_file:
body = key.get()['Body']
for chunk in iter(lambda: body.read(4096), b''):
filehandle.write(chunk)
वहाँ boto3 में यह करने के लिए एक बेहतर तरीका है:
वर्तमान में, मैं कोड शरीर पर पुनरावृत्ति के रूप में निम्नानुसार द्वारा boto3 में काम करने के लिए मिल सकता है?
क्या आप 'tmp_file.name' को' download_file() 'पास नहीं कर सकते? – helloV
@helloV इस मामले में मैं ['नामांकित समकालीन फ़ाइल '] का उपयोग कर सकता हूं (https://docs.python.org/2/library/tempfile.html#tempfile.NamedTemporaryFile), जिसमें फ़ाइल नाम है। मुझे यकीन नहीं है कि यह एक अच्छा विचार है, क्योंकि 'download_file' विधि एक ही फ़ाइल के लिए एक नई फ़ाइल हैंडल खोल देगा। आम तौर पर, सभी फ़ाइल हैंडल में फ़ाइल नाम नहीं होते हैं (उदा। 'स्ट्रिंगियो', 'अस्थायी फ़ाइल')। – Alasdair
क्या यह नहीं है [download_fileobj] (https://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Bucket.download_fileobj) के लिए है? –