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

Python将字典键作为文件名写入S3报ParamValidationError如何解决

问题原因及解决方案

错误根因

  • S3的put_object接口的Body参数仅接受字节流、字符串、类文件对象三类输入,你直接传入了Python原生列表类型的data,boto3无法自动序列化列表结构,因此触发参数校验失败。

修复方法

需要先通过json模块将Python列表序列化为JSON格式内容后再传入接口,示例代码如下:

import json

for month, data in month_data.items():
    # 序列化列表为JSON字符串并编码为utf-8字节流
    json_content = json.dumps(data, ensure_ascii=False).encode("utf-8")
    s3.put_object(Bucket=s3_bucket, Body=json_content, Key=f"{month}.json")

补充说明

  • 参数ensure_ascii=False用于兼容内容中的非ASCII字符,无特殊字符时可省略
  • 显式编码为utf-8字节流可避免不同环境下的默认编码差异导致的文件乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:06:02