2016-09-12 5 views
-1

Ich bin beschäftigt mit einem Uni-Projekt, wo ich Textdateien lesen muss und zehn eine Tabelle mit ihren Informationen füllen. Es funktionierte letzte Woche gut, als ich es zum ersten Mal schrieb. Nun aber, wenn ich versuche, es zu laufen, erhalte ich die Typeerror: Bool, es tritt in meiner for-Schleife, wenn ich aus der Textdatei read_ln, der Code ist:TypeError: 'Bool'-Objekt ist nicht iterierbar, beim Lesen einer Textdatei

from sqlite3 import * 
from webbrowser import * 

    #retrieve a text file 
    while inc != len(categories): 
     file_open = open(categories[inc]+'.txt','U') 
    #assign the category 
     category = categories[inc] 
    #run the loop to populate the table popularity 
     for each_ln in file_open: 
    #assign the variables. 
      tab_index = each_ln.find('\t') 
      PersonNumber = each_ln[0:tab_index] 
      value = each_ln[tab_index + 1:len(each_ln)] 
    #populate the database.   
      TH2_db.execute("INSERT INTO popularity VALUES (?,?,?)" \ 
          , (PersonNumber, category, value)) 
    #increment to move onto the next textfile   
     inc = inc + 1 
+0

Bitte beschränken Sie den Code auf das Wesentliche Ihres Problems. – Evert

+1

Bitte fügen Sie die vollständige Traceback in Ihre Frage ein; (vollständige) Fehlerinformationen sind nützlich für die Analyse. – Evert

+0

Wenn Sie den Code einschränken, vergewissern Sie sich, dass er noch ausgeführt werden kann. Siehe [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve). – Evert

Antwort

0

Ihre Aussagen from webbrowser import * an der Spitze Ihr Modul importiert die webbrowser.open-Funktion (die ein neues Browserfenster öffnet) und überschreibt die eingebaute Funktion open (die Dateien öffnet), die Sie in Ihrem späteren Code aufrufen wollten. webbrowser.open gibt einen booleschen Wert statt eines Dateiobjekts zurück, worum es bei der Ausnahme geht.

Um dies zu beheben, ändern Sie den Import. Verwenden Sie entweder import webbrowser und qualifizieren Sie die Orte, an denen Sie das Modul verwenden (z. B. webbrowser.get() oder wofür Sie es auch immer verwenden), oder importieren Sie nur die spezifischen Namen, die Sie benötigen (z. B. from webbrowser import get).

Das Importieren mit einem Platzhalter ist im Allgemeinen keine gute Idee, es sei denn, das Modul, auf dem Sie es ausführen, wurde speziell dafür entwickelt. Dieses Problem zeigt genau warum.

+0

Ja, ich danke Ihnen, ich habe das gerade erkannt, während ich versuchte herauszufinden, was das Problem sein könnte, weiter unten, später wollte ich Öffnen Sie eine HTML-Datei und schreiben Sie darauf, dann öffnen Sie sie in einem Webbrowser, daher der Import. – Act

Verwandte Themen