python csv.read 在第二次迭代时失败

1 投票
3 回答
1614 浏览
提问于 2025-04-17 07:01

我的代码大概是这样的:

for filename in files:
  with open(filename, 'rb') as csvfile:
    csvreader = csv.reader(csvfile, delimiter=';')
    values=list(csvreader)
  dosomething()

我有大约10个文件想要处理,处理第一个文件的时候没有问题。但是当Python开始处理第二个文件时,它就报错了:

Traceback (most recent call last):
File "plot.py", line 20, in <module>
values=list(csvreader)
TypeError: 'list' object is not callable

有没有人知道为什么这样不行呢?

3 个回答

1

因为你没有贴出你的具体代码,所以我不能确定。不过看起来你在处理第一个文件的时候,把一个变量命名为 list,这样就把内置的 list 函数给覆盖掉了。

1

这个错误信息的意思是,列表(list)在你提供的代码块之外的地方被重新定义了。比如说:

>>> list = list()
>>> list()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable

请检查一下,你的代码里有没有在其他地方把列表(list)重新绑定到其他对象上。

5

你在某个地方使用了一个叫 list 的变量来存放一个列表的实例。如果这个问题出现在这里,那这个变量是全局的。这样做其实不太好。因为每次使用这个名字 list 时,程序都会去查找这个变量,而不是你真正想用的 list 类型(也就是你想用来从 csvreader 的结果中构建列表的那个)。

撰写回答