首页 > 解决方案 > 如何将键创建为文件夹,将值创建为文件

问题描述

预计出局

输出1 { 'test1':['csv1.csv'], 'test2':['csv2'], 'test3':['csv3']}

输出2 { 'test1':'csv1.csv', 'test2':'csv2', 'test3':'csv3'}

#list all the objects
import boto3 
s3 = boto3.client("s3")
final_data = {}
all_objects = s3.list_objects(Bucket = 'testfolder') 
#List the object in subfolder
#create a dictionary

标签: pythonamazon-web-servicesamazon-s3aws-lambda

解决方案


您可以检查以下给出output1格式的代码。因为output2您可以相应地修改final_data

from collections import defaultdict

import boto3

s3 = boto3.resource("s3")

final_data = defaultdict(list)

in_bucket = 'test-bucket-folder-4412313'

for obj in s3.Bucket(in_bucket).objects.all():
    print(obj.key)
    
    folder_name = obj.key.split('/')[0]
    file_name = obj.key.split('/')[1]

    final_data[folder_name].append(file_name)


print(dict(final_data))

它打印出来:

{'test1': ['csv1.csv'], 'test2': ['csv2.csv'], 'test3': ['csv3.csv']}

推荐阅读