You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取S3存储桶多文件夹下所有图片文件的Object URL

问题描述

我的文件分布在多个子文件夹中:

  • 一级子文件夹(命名为"Box",即FOLDER_1)总数为24个
  • 每个FOLDER_1下的二级子文件夹(FOLDER_2)总数为1505个

S3 Object URL格式如下:

https://BUCKET_NAME.s3.amazonaws.com/FOLDER_1/FOLDER_2

我在查找解决方案时遇到循环数组的问题,现有代码:

import boto3

s3_uri="s3://BUCKET_NAME/FOLDER_1/FOLDER2/" # 要递归扫描的文件夹的S3 URI,请替换为您自己的S3 URI

# 拆分S3 URI以提取存储桶名称和文件前缀
# 拆分S3 URI将生成一个数组
# 组合数组中的适当元素以提取BUCKET_NAME和PREFIX
arr=s3_uri.split('/')
bucket =arr[2]
prefix=""
for i in range(3,len(arr)-1):
    prefix=prefix+arr[i]+"/"
    
s3_client = boto3.client("s3")

def list_s3_files_using_client(bucket,prefix,s3_client):
    response = s3_client.list_objects_v2(Bucket=bucket,  Prefix=prefix) # 获取文件夹中所有文件的元数据
    files = response.get("Contents")
    for file in files: # 遍历每个文件
        file_path=file['Key']
        object_url="https://"+bucket+".s3.amazonaws.com/"+file_path # 手动创建Object URL
        print("Object Url =  "+object_url)

list_s3_files_using_client(bucket=bucket,prefix=prefix,s3_client=s3_client)

期望输出示例:

https://BUCKET_NAME.s3.amazonaws.com/FOLDER_1/FOLDER_1/FILE_NAME_1
https://BUCKET_NAME.s3.amazonaws.com/FOLDER_1/FOLDER_2/FILE_NAME_1
https://BUCKET_NAME.s3.amazonaws.com/FOLDER_2/FOLDER_3/FILE_NAME_1
.
.
.
https://BUCKET_NAME.s3.amazonaws.com/FOLDER_N/FOLDER_N/FILE_NAME_N

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:37:10