如何使用AWS SDK for Python递归列出AWS S3 bucket中的文件?

如何使用AWS SDK for Python递归列出AWS S3 bucket中的文件?,python,amazon-web-services,amazon-s3,ls,boto3,Python,Amazon Web Services,Amazon S3,Ls,Boto3,我试图复制AWS CLIls命令,以递归方式列出AWS S3存储桶中的文件。例如,我将使用以下命令递归列出“location2”存储桶中的所有文件 aws s3 ls s3://location2--recursive(即bot3)的等价物是什么?使用aws SDK时,无需使用--recursive选项,因为它使用该方法列出了bucket中的所有对象 使用更高级别的API和使用资源是一条出路 import boto3 s3 = boto3.resource('s3') bucket = s3.

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


aws s3 ls s3://location2--recursive
(即
bot3
)的等价物是什么?

使用aws SDK时,无需使用--recursive选项,因为它使用该方法列出了bucket中的所有对象


使用更高级别的API和使用资源是一条出路

import boto3

s3 = boto3.resource('s3')
bucket = s3.Bucket('location2')
bucket_files = [x.key for x in bucket.objects.all()]
您还可以使用客户端库,它是开源的,与AWSS3兼容

下面的示例中,您可以参考以了解更多信息

from minio import Minio client = Minio('s3.amazonaws.com', access_key='YOUR-ACCESSKEYID', secret_key='YOUR-SECRETACCESSKEY') # List all object paths in bucket that begin with my-prefixname. objects = client.list_objects('my-bucketname', prefix='my-prefixname', recursive=True) for obj in objects: print(obj.bucket_name, obj.object_name.encode('utf-8'), obj.last_modified, obj.etag, obj.size, obj.content_type) 从minio导入minio client=Minio('s3.amazonaws.com', access\u key='YOUR-ACCESSKEYID', secret\u key='YOUR-SECRETACCESSKEY') #列出bucket中以我的前缀name开头的所有对象路径。 objects=client.list_对象('my-bucketname',prefix='my-prefixname', 递归=真) 对于对象中的obj: 打印(obj.bucket\u name、obj.object\u name.encode('utf-8')、obj.last\u modified、, obj.etag、obj.size、obj.content(对象类型) 希望能有帮助

免责声明:我为

工作,您需要使用:


您需要对延续标记进行特殊处理,以递归地列出S3位置中的对象。您提供的代码列出了bucket中的“所有对象”,如果对象小于1000(S3API中列表调用的最大结果大小)
import boto3

s3 = boto3.resource('s3')
bucket = s3.Bucket('location2')
bucket_files = [x.key for x in bucket.objects.all()]
from minio import Minio client = Minio('s3.amazonaws.com', access_key='YOUR-ACCESSKEYID', secret_key='YOUR-SECRETACCESSKEY') # List all object paths in bucket that begin with my-prefixname. objects = client.list_objects('my-bucketname', prefix='my-prefixname', recursive=True) for obj in objects: print(obj.bucket_name, obj.object_name.encode('utf-8'), obj.last_modified, obj.etag, obj.size, obj.content_type)
import boto3 

client = boto3.client("s3")
bucket = "my-bucket"
paginator = client.get_paginator('list_objects')
page_iterator = paginator.paginate(Bucket=bucket)
for page in page_iterator:
    for obj in page['Contents']:
        print(f"s3://{bucket}/{obj["Key"]}")