我的代码看起来像这样:
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
有谁知道为什么这不起作用?
答案 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命名列表,它会影响实际的内置列表函数。