Python: TypeError: аргумент типа "встроенная функция или метод" не является итерационным

у меня есть следующий код:

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 ответов


изменить строку

content = inputFile.read().lower

to

content = inputFile.read().lower()

ваша исходная строка назначает встроенную функцию ниже вашего содержимого переменной вместо вызова функции str.lower и присвоение возвращаемого значения, которое определенно не является итерационным.


вы используете

content = inputFile.read().lower

вместо

content = inputFile.read().lower()

ie вы получаете функцию ниже, а не возвращаемое значение от 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