2013-01-19 18 views
6

Ho il seguente codice:Python: TypeError: argomento di tipo 'builtin_function_or_method' non è iterabile

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

che dà sempre questo errore:

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

qualcuno può far luce sul perché.

thans

risposta

22

Modificare la linea

content = inputFile.read().lower 

a

content = inputFile.read().lower() 

tua linea originale assegna la funzione built-in inferiore al contenuto variabile, invece di chiamare la funzione str.lower e l'assegnazione del valore di ritorno che non è assolutamente iterabile.

+0

capito, grazie mille –

+0

@ LWH91: Non dimenticare di accettare e upvote la risposta che ha aiutato. – Abhijit

2

Stai usando

content = inputFile.read().lower 

invece di

content = inputFile.read().lower() 

cioè che stai ricevendo la funzione inferiore e non il valore restituito dal basso.

In effetti quello che stai ricevendo è:

>>> 
>>> 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 
Problemi correlati