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

时间:2011-11-24 23:34:50

标签: python parsing csv

我的代码看起来像这样:

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 个答案:

答案 0 :(得分:5)

在某个地方,您使用了一个名为list的变量(全局,如果问题显示在这里)来保存列表的实例。这是个坏主意。每次使用时都会查找名称list,并且该变量优先于实际的list类型,这是您想要的(即为了从{{1构建列表)结果)。

答案 1 :(得分:1)

错误消息表明正在重新定义列表,而不是在您提供的代码块之外的某个位置。例如:

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

检查您的代码中的其他对象是否没有反弹列表。

答案 2 :(得分:1)

因为你还没有发布你的实际代码,所以我不能确定,但​​是在处理第一个文件时,你会看到你正在分配一个var命名列表,它会影响实际的内置列表函数。