আমার এস 3 keys
ইউটিলিটি ফাংশনটি মূলত @ হেফেসটাসের উত্তরের একটি অনুকূলিত সংস্করণ:
import boto3
s3_paginator = boto3.client('s3').get_paginator('list_objects_v2')
def keys(bucket_name, prefix='/', delimiter='/', start_after=''):
prefix = prefix[1:] if prefix.startswith(delimiter) else prefix
start_after = (start_after or prefix) if prefix.endswith(delimiter) else start_after
for page in s3_paginator.paginate(Bucket=bucket_name, Prefix=prefix, StartAfter=start_after):
for content in page.get('Contents', ()):
yield content['Key']
আমার পরীক্ষায় (বোটো3 1.9.84), এটি সমমানের (তবে সহজ) কোডের তুলনায় উল্লেখযোগ্যভাবে দ্রুত:
import boto3
def keys(bucket_name, prefix='/', delimiter='/'):
prefix = prefix[1:] if prefix.startswith(delimiter) else prefix
bucket = boto3.resource('s3').Bucket(bucket_name)
return (_.key for _ in bucket.objects.filter(Prefix=prefix))
এস 3 ইউটিএফ -8 বাইনারি বাছাই করা ফলাফলের গ্যারান্টি হিসাবে , start_after
প্রথম ক্রিয়ায় একটি অপ্টিমাইজেশন যুক্ত করা হয়েছে।