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