Python:TypeError:类型为'builtin_function_or_method'的参数不可迭代

时间:2013-01-19 13:09:56

标签: python python-3.x

我有以下代码:

def search():
    os.chdir("C:/Users/Luke/Desktop/MyFiles")
    files = os.listdir(".")
    os.mkdir("C:/Users/Luke/Desktop/FilesWithString")
    string = input("Please enter the website your are looking for (in lower case):")
    for x in files:
        inputFile = open(x, "r")
        try:
            content = inputFile.read().lower
        except UnicodeDecodeError:
            continue
        inputFile.close()
        if string in content:
            shutil.copy(x, "C:/Users/Luke/Desktop/FilesWithString")

总是会出现此错误:

line 80, in search
    if string in content:
TypeError: argument of type 'builtin_function_or_method' is not iterable
有人可以解释为什么会这样做。

thans

2 个答案:

答案 0 :(得分:28)

更改行

content = inputFile.read().lower

content = inputFile.read().lower()

您的原始行将内置函数分配给您的变量内容,而不是调用函数str.lower并指定绝对不可迭代的返回值。

答案 1 :(得分:4)

你正在使用

content = inputFile.read().lower

而不是

content = inputFile.read().lower()

即你的功能较低,而不是较低的返回值。

实际上你得到的是:

>>> 
>>> for x in "HELLO".lower:
...     print x
... 
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'builtin_function_or_method' object is not iterable