Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python“;列表“;对象不可调用_Python - Fatal编程技术网

Python“;列表“;对象不可调用

Python“;列表“;对象不可调用,python,Python,我正在编写一个程序,在目录中查找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(

我正在编写一个程序,在目录中查找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”对象是不可调用的
。有人能解释一下发生了什么吗?

我想这是因为你重新定义了
打开
作为一个列表,并在下一个循环迭代中调用它。 只要给名单起另一个名字就行了


请注意,字符串有一个
split()
方法,用于不需要正则表达式的情况。

黄金法则是:不要为变量使用内置对象的名称


这是一个别名问题,只是不要调用列表
open

同意前面的答案:不要调用变量
open
或任何其他变量

您可能对Python感兴趣,它将正确解析
re.split(“,”,line)
不会解析的csv文件

此外,还可以将文件对象用作逐行迭代器,如下所示:

for line in open('data.csv'):
    do_something(line)
open
是一个内置函数这一事实与此无关。它可能是在同一模块中定义的函数

基本问题是,使用相同的名称来引用两个不同的对象(函数和列表),这两个对象都是需要的。当再次需要第一个对象时,名称引用第二个对象。结果:splat。黄金法则是:不要随意重复使用名字