Python 2.7 列出文件夹中的s3文件仅列出第一个文件夹文件
我有一个S3 bucketPython 2.7 列出文件夹中的s3文件仅列出第一个文件夹文件,python-2.7,amazon-s3,boto3,Python 2.7,Amazon S3,Boto3,我有一个S3 bucketbucket1,里面有一个文件夹test1。在test1文件夹folder1,folder2,folder3中有很多文件夹。每个folderx都包含一堆文件。我想列出所有文件夹中的所有文件。所以先列出folder1的文件,然后再列出folder2的文件,依此类推 s3_bucket --> test1 ---> folder1 --->file1
bucket1
,里面有一个文件夹test1
。在test1
文件夹folder1
,folder2
,folder3
中有很多文件夹。每个folderx
都包含一堆文件。我想列出所有文件夹中的所有文件。所以先列出folder1的文件,然后再列出folder2的文件,依此类推
s3_bucket --> test1
---> folder1
--->file1
--->file2
---> folder2
--->file1
--->file2
---> folder3
--->file1
--->file2
然而,在我的代码中,它只列出folder1的文件。有人能验证一下我的密码吗
s3 = boto3.client('s3')
resp = s3.list_objects_v2(Bucket=s3_bucket, Prefix=s3_path)
for file in resp['Contents']:
key = file['Key']
print key
分页:不会在folder2上迭代。folder1有1000个文件
s3 = boto3.client('s3')
kwargs = {'Bucket': s3_bucket}
while True:
resp = s3.list_objects(Bucket=s3_bucket, Prefix=s3_path)
try:
contents = resp['Contents']
print(len(contents))
except KeyError:
return
for file in contents:
key = file['Key']
try:
kwargs['ContinuationToken'] = resp['NextContinuationToken']
except KeyError:
break
感谢所有@dmulter@Michael@anand的建议和指导 这在s3路径是键的情况下起作用(在unix术语中,文件夹路径不包括bucket)
对我来说很好。请检查前缀是否正确not@anand你能把你在我的案例中使用的前缀发送给我吗?也许你得到的是一个分页的响应,而且还有更多的内容需要使用
ContinuationToken
?@Atihska如果你想在“test1”中找到所有内容,前缀是test1/
。您可能还需要一个分页器。现在这变成了另一个关于分页的问题。请阅读和上的文件。这很简单。
s3 = boto3.resource('s3')
bucket = s3.Bucket(s3_bucket)
for obj in bucket.objects.filter(Prefix=s3_path):
key = obj.key