python csv.read 在第二次迭代时失败
我的代码大概是这样的:
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
的结果中构建列表的那个)。