Python "List" 对象不可调用
我正在写一个程序,这个程序会在一个文件夹里查找CSV文件,并把每个CSV文件的内容添加到一个列表里。下面是出问题的代码片段:
import glob
import re
c = glob.glob("*.csv")
print c
archive = []
for element in c:
look = open(element, "r").read()
open = re.split("\n+", look)
for n in open:
n = re.split(",", n)[0]
archive.append(n)
但是,当我运行这个脚本时,出现了一个错误:TypeError: 'list' object is not callable
。有人能帮我解释一下这是怎么回事吗?
4 个回答
5
其实,open
是一个内置函数这件事并不重要。它本来可以是同一个模块里定义的一个函数。
这里的主要问题是,使用了相同的名字来指代两个不同的东西(一个是函数,一个是列表),而这两个东西在后面都需要用到。当第一次需要用到的那个东西再次被需要时,名字却指向了第二个东西。结果就是出错了。记住一个黄金法则:不要随便重复使用名字。
10
我觉得这是因为你把 open
重新定义成了一个列表,然后在下一个循环中又调用了它。你可以给这个列表起个其他的名字。
另外,字符串有一个 split()
方法,可以在你不需要正则表达式的时候使用。