如何使用awssdkforpython递归列出aws3bucket中的文件?

2024-06-02 07:38:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图复制AWS CLIls命令,以递归方式列出aws3存储桶中的文件。例如,我将使用以下命令递归地列出“location2”bucket中的所有文件。在

aws s3 ls s3://location2 --recursive

AWS SDK for Python(即boto3)等价于aws s3 ls s3://location2 --recursive?在


Tags: 文件命令awsfors3bucket方式sdk
3条回答

您需要使用paginators

bucket = "my-bucket"

import boto3 
client = boto3.client("s3")
paginator = client.get_paginator('list_objects')
page_iterator = paginator.paginate(Bucket=bucket)
for page in page_iterator:
    for obj in page['Contents']:
        print("s3://%s/%s" % (bucket, obj["Key"]))

使用更高级别的API和使用资源是正确的选择。在

import boto3

s3 = boto3.resource('s3')
bucket = s3.Bucket('location2')
bucket_files = [x.key for x in bucket.objects.all()]

在使用awsdk时不需要使用--recursive选项,因为它使用list_objects方法列出bucket中的所有对象。在

import boto3 
client = boto3.client('s3')
client.list_objects(Bucket='MyBucket')

相关问题 更多 >