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

如何用Python生成垂直结构的CSV文件?

解决CSV生成超大文件问题并实现目标格式

嘿,我来帮你搞定这个问题!你之前的代码之所以生成1GB的超大文件,主要是两个逻辑错误在搞鬼,咱们一步步来修正:

问题出在哪?

  • 循环内重复写入:你把writeheader()和writerow()放在了for i in cycle_with_signal_change的循环里,这意味着每遍历一个字典的键,就会重复写一次表头和整份数据。哪怕数据本身很小,重复次数多了文件也会疯狂膨胀。
  • 用错了Writer类型:csv.DictWriter是用来把字典的键作为表头、值作为对应列内容的,但你的需求是把每个字典键放在第一列,对应的值拆分成后面的三列,这个工具并不适配你的场景。

正确的实现代码

咱们换用普通的csv.writer来实现你要的格式,代码如下:

import csv

# 你的原始字典数据
cycle_with_signal_change = {"v1": ["v11", "v12", "v13"], "v2": ["v21", "v22", "v23"], "v3": ["v31", "v32", "v33"]}

with open("cyclesAndSignalChange.csv", 'w', newline='', encoding='utf-8') as csvfile:
    # 创建普通csv写入器,指定分隔符为空格
    wr = csv.writer(csvfile, delimiter=' ')
    # 先写入表头行
    wr.writerow(["A", "B", "C", "D"])
    # 遍历字典的每个键值对,逐行写入
    for key, values in cycle_with_signal_change.items():
        # 把键和对应的三个值拼接成一行数据
        wr.writerow([key] + values)

代码说明

  • 用'w'模式而非'wb':在Python3中写入文本文件推荐用'w',加上newline=''可以避免Windows系统下生成多余的空行。
  • 先写表头再写数据:表头只需要写一次,然后遍历字典的每个键值对,把键作为第一列,对应列表的三个元素作为后面三列,刚好符合你要的格式。
  • 避免重复写入:把写入操作放在循环外(表头)和循环内(逐行数据),确保每一行数据只写一次,不会重复堆积。

这样生成的文件就会是你想要的结构,大小也会和实际数据匹配啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:23:37