python - 如何将键创建为文件夹,将值创建为文件
问题描述
我有一个存储桶名称 testfolder
在 testfolder 里面有 test1,test2,test3
每个文件夹都有csv文件
需要为文件夹和文件创建键值对
预计出局
输出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
解决方案
您可以检查以下给出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']}
推荐阅读
- oracle - 将 regexp_replace 连接到 listagg:结果太长(SQL 错误:ORA-01489)
- r - R中的舍入错误导致for循环中的错误结果
- c - 从指向结构中的指针的指针中读取值(SPI 事务)
- typescript - 我需要包括 admin.initializeApp(); 在我所有的 Firebase 云函数文件(Typescript)中?
- git - “git config core.worktree”是什么意思?
- mysql - MySQL 服务器不通过 Mac OS 上的 MAMP 运行
- python - 打开子进程的 Python 线程直到我按 Enter 才加入
- c# - C# 日期比较函数产生错误结果
- neo4j - 在节点上执行基于时间的操作
- google-apps - 多个 G Suite 帐号