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

解决TypeError: '_csv.writer' object is not an iterator错误,实现CSV行添加

解决TypeError: '_csv.writer' object is not an iterator错误(向CSV添加数据行)

你的错误根源很明确:在add_item方法里,你错误地把csv.writer实例赋值给了reader变量,接着用next()去读取它——但csv.writer是用来写文件的,根本不是迭代器,自然会报错。

下面是修改后的代码,重点修正了add_item方法的问题:

import csv

class CsvReader:
    def __init__(self): 
        self.result = []

    def make_dict_items(self):
        # fn = os.path.join('subdir', "Items2.csv")
        with open("Items2.csv") as fp:
            reader = csv.reader(fp)
            labels = next(reader, None)
            for row in reader:
                row[0] = int(row[0])
                row[1] = float(row[1])
                row[2] = int(row[2])
                self.result.append(dict(zip(labels, row)))

    def add_item(self):
        item_num = int(input("What is the items #?\n"))
        price = float(input("What is the items price?\n"))
        quant = int(input("What is the items quantity?\n"))
        name = input("What is the items name?\n")
        new_row = [item_num, price, quant, name]
        
        with open("Items2.csv", "a+", newline='') as fp:
            # 修正:创建csv.reader来读取表头,而非writer
            fp.seek(0)
            reader = csv.reader(fp)
            labels = next(reader, None)
            
            # 处理文件为空的情况:先写入表头
            if not labels:
                labels = ["Item #", "Price", "Quantity", "Name"]  # 替换成你CSV实际的表头
                writer = csv.writer(fp)
                writer.writerow(labels)
            
            # 写入新数据行
            writer = csv.writer(fp)
            writer.writerow(new_row)
            
            # 更新内存中的result列表
            new_record = dict(zip(labels, new_row))
            self.result.append(new_record)

关键修改说明:

  • 把reader = csv.writer(fp)改为reader = csv.reader(fp),用正确的读取类来获取表头。
  • 打开文件时添加newline='',避免CSV写入时出现多余空行(Python csv模块的最佳实践)。
  • 增加了文件为空时的表头写入逻辑,避免首次运行报错。
  • 直接用writer.writerow(new_row)写入数据,无需转字典再取values——因为你输入的顺序已经和表头对应,更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:45:34