2013-01-19 16 views
6

Mam następujący kod:Python: Błąd typu: argument typu 'builtin_function_or_method' nie jest iterable

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") 

który zawsze daje ten błąd:

line 80, in search 
    if string in content: 
TypeError: argument of type 'builtin_function_or_method' is not iterable 

ktoś może rzucić nieco światła na dlaczego.

Thans

Odpowiedz

22

zmienić linię

content = inputFile.read().lower 

do

content = inputFile.read().lower() 

Oryginalna linia przypisuje wbudowana funkcja niższy do zmiennej zawartości zamiast wywoływania funkcji str.lower i przypisywanie zwracana wartość, która zdecydowanie nie jest możliwa do zweryfikowania.

+0

got it, thanks a lot –

+0

@ LWH91: Nie zapomnij, aby zaakceptować i upvote odpowiedź, że pomogło. – Abhijit

2

Używasz

content = inputFile.read().lower 

zamiast

content = inputFile.read().lower() 

czyli jesteś coraz niższe, a funkcja nie wartości zwracanej z niżej.

W efekcie, co dostajesz to:

>>> 
>>> 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 
Powiązane problemy