如何使用AWS SDK for Python递归列出AWS S3 bucket中的文件?
我试图复制AWS CLI如何使用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.
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"]}")