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

如何用Python将两个列表写入CSV?遇izip导入错误及文件清空问题

解决两个列表写入CSV的常见问题

嘿,我来帮你搞定这两个CSV写入的小麻烦~

1. 关于izip的ImportError错误

这个问题其实是Python版本差异搞的鬼:

  • 在Python 2里,zip()会返回一个列表,而itertools.izip()返回迭代器(更省内存);
  • 但到了Python 3,zip()本身就已经返回迭代器了,itertools里不再有izip这个函数啦!

如果你的代码需要兼容Python 2和3,可以这么写兼容代码:

try:
    from itertools import izip
except ImportError:
    # Python 3下直接用zip替代izip
    izip = zip

要是只在Python 3环境运行,直接用zip()就好,功能和原来的izip完全一样~

2. 使用zip方案时原CSV被清空的问题

这大概率是你打开文件的模式用错了!

  • 如果你用了open('file.csv', 'w'),'w'模式会直接截断并清空原有文件,然后写入新内容;
  • 如果你想追加内容到现有CSV末尾,要改用'a'模式;
  • 如果你想保留原内容并添加新列/行,得先读取原文件内容,合并后再写入。

给你几个实用的示例:

示例1:创建新CSV,将两个列表写入两列

import csv

col1 = ["apple", "banana", "cherry"]
col2 = [10, 20, 30]

# 'w'模式适合创建新文件,newline=''避免Windows下多空行
with open('fruits.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    # 遍历zip后的每一组,写入一行
    for item in zip(col1, col2):
        writer.writerow(item)

示例2:追加内容到现有CSV末尾

import csv

new_col1 = ["date", "orange"]
new_col2 = [40, 50]

# 'a'模式是追加,不会清空原有内容
with open('fruits.csv', 'a', newline='') as csvfile:
    writer = csv.writer(csvfile)
    for item in zip(new_col1, new_col2):
        writer.writerow(item)

示例3:给原CSV添加新列(保留原有内容)

如果要把两个列表作为新的列加到原CSV的每一行:

import csv

# 先读取原CSV的所有内容
original_rows = []
with open('fruits.csv', 'r') as csvfile:
    reader = csv.reader(csvfile)
    original_rows = list(reader)

# 准备要添加的新列数据
new_col1 = ["fresh", "fresh", "fresh", "fresh"]
new_col2 = ["yes", "yes", "yes", "yes"]

# 合并原行和新列(要保证新列长度和原行数一致哦)
for idx in range(len(original_rows)):
    original_rows[idx].append(new_col1[idx])
    original_rows[idx].append(new_col2[idx])

# 写回文件(这里用'w'模式,因为我们已经把原内容读出来合并了)
with open('fruits.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerows(original_rows)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:31:37