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

如何通过Python向S3存储桶子文件夹上传对应value.json文件

问题原因

你的代码运行结果不符合预期,是两个逻辑错误导致的:

  • 写入S3的Body部分调用json.dumps时传入了完整的My_dict,所以每个生成的JSON文件都包含全量键值对
  • S3对象Key的拼接规则不对:当前逻辑是把文件后缀从.csv替换为.json,最终生成的是和CSV同名的JSON文件(比如folder_1/folder_2/folder_3/file_1.json),不是你需要的同目录下固定命名的value.json
修正代码

遍历字典时单独构造当前条目对应的单键值对,同时通过路径切分拿到CSV所在的目录,拼接出value.json的正确S3路径即可:

import json
import boto3

s3 = boto3.client('s3')
bucket_name = "替换为你的S3桶实际名称"
My_dict = {
    'folder_1/folder_2/folder_3/file_1.csv': 'value_1',
    'folder_1/folder_4/folder_5/file_2.csv': 'value_2'
}

for csv_full_path, matched_value in My_dict.items():
    # 从右往左按第一个/切分,拿到CSV文件所在的文件夹路径,适配多层目录场景
    target_folder = csv_full_path.rsplit('/', 1)[0]
    # 拼接value.json的完整S3键
    json_object_key = f"{target_folder}/value.json"
    # 仅写入当前CSV对应的单条键值对
    s3.put_object(
        Bucket=bucket_name,
        Body=json.dumps({csv_full_path: matched_value}),
        Key=json_object_key
    )
运行结果

代码执行后会在S3生成两个符合要求的文件:

  1. 键为folder_1/folder_2/folder_3/value.json,内容为{"folder_1/folder_2/folder_3/file_1.csv": "value_1"}
  2. 键为folder_1/folder_4/folder_5/value.json,内容为{"folder_1/folder_4/folder_5/file_2.csv": "value_2"}

补充:你问题描述里写的第二个value.json的预期路径存在笔误,把路径中的folder_4错写为folder_2,上述代码是按照你给出的原始字典路径实现的,和CSV实际存放位置完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:57:11