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

Python从S3追加CSV数据时出现重复条目问题求助

问题分析与解决

你的代码有两个核心问题:

  1. 重复写入表头:把写表头的writer.writerow(field)放在了for循环里面,导致每遍历一个S3对象就写一次表头,所以出现了多次account_id;arn的重复行。
  2. 每次运行追加旧数据:用了文件打开模式"a"(追加),每次运行脚本都会把新内容加到已有文件后面,而不是重新生成文件,所以数据越积越乱。

修正后的代码

import csv

# 打开文件用"w"模式(覆盖原有内容),先写一次表头
with open("my_file.csv", "w", newline="") as f:
    writer = csv.writer(f, delimiter=";", lineterminator="\n")
    # 写入表头
    writer.writerow(["account_id", "arn"])
    
    # 遍历S3对象,只写入对应的数据行
    for obj in my_bucket.objects.filter(Prefix="folderpath"):
        key = obj.key
        # 注意:read()返回字节流,转成字符串避免乱码,若body是二进制数据可去掉decode步骤
        body = obj.get()['Body'].read().decode('utf-8')
        writer.writerow([key, body])

关键改动说明

  • 将文件打开操作移到循环外,使用"w"模式:每次运行脚本会清空旧文件,重新生成干净的CSV,彻底解决追加旧数据的问题。
  • 表头仅在文件开头写入一次,循环内只处理每个对象的数据行,消除重复表头。
  • 新增字节转字符串的处理:read()返回的是字节对象,直接写入CSV可能出现乱码,根据实际数据格式调整解码方式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 10:29:54