如何获取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
相关产品推荐
相关产品推荐

