访问s3存储桶的特定子文件夹内的所有文件的对象密钥

时间:2019-08-21 11:11:08

标签: python python-3.x amazon-web-services amazon-s3 boto3

我有一个s3存储桶,其中有很多子文件夹。 我只想打印特定子文件夹“ abcxyz ”中所有文件的密钥。 在那个桶里

使用以下代码成功实现了该子文件夹的文件:

import boto3, os, sys
from botocore.client import Config


# Removed my credentials here on StackOverflow
ACCESS_KEY_ID = ''
ACCESS_SECRET_KEY = ''
BUCKET_NAME = ''


s3 = boto3.resource(
    's3',
    aws_access_key_id=ACCESS_KEY_ID,
    aws_secret_access_key=ACCESS_SECRET_KEY,
    config=Config(signature_version='s3v4')
)

my_bucket = s3.Bucket(BUCKET_NAME) 
for obj in my_bucket.objects.filter(Prefix=Folder_name + '/'):
    print(obj)

它给我的输出为:

s3.ObjectSummary(bucket_name='', key='abcxyz/1.jpg')
s3.ObjectSummary(bucket_name='', key='abcxyz/2.jpg')
s3.ObjectSummary(bucket_name='', key='abcxyz/3.jpg')
.
.
.

以此类推。(在此删除了存储桶名称)

我只想打印所有文件的键名,例如:

abcxyz/1.jpg
abcxyz/2.jpg
abcxyz/3.jpg
.
.
.

已引用链接:

https://alexwlchan.net/2017/07/listing-s3-keys/

Accessing a specific key in a s3 bucket using boto3

但是想不出盒子。我可以获得打印所需输出的帮助吗?

3 个答案:

答案 0 :(得分:3)

使用:

print(obj.key)

您可能希望将子文件夹从正面拉出。

答案 1 :(得分:1)

如果您执行打印(obj.key),它将使您到达那里。

答案 2 :(得分:1)

最后添加此内容,它将打印

print (obj.get("Key").split("/")[1])