2017-07-28 3 views
-1

Ich habe diesen Code:Was hat TypeError: 'Datei' Objekt hat kein Attribut '__getitem__'?

 My_Directory = r"/Users/schuylerraeschroerborges/Desktop/Mars_Project/mcam_image_and_label/0984MR0043380090502893E01_DRCL"  # Get data from directory 
    My_Extension = ".LBL" 

    WorkingDirectory = "/Users/schuylerraeschroerborges/Desktop/Mars_Project/" # Work in same directory 

    f = open('mcam_image_and_label/0984MR0043380090502893E01_DRCL.LBL','r') # Open label file 
    lines = f.readlines() #index lines 
    g = open('Expanded_data.csv','w+') # Write in excel spreadsheet 
    lines = g.readlines() 


    ID_line = f[21] 
    ID = re.split('"',f[21])[2] 
    LO_line = f[134] 
    LO = re.split('(',f[134])[2] 
    DI_line = f[442] 
    DI = re.split('=',f[442])[2] 
    AZ_line = f[445] 
    AZ = re.split('=',f[445])[2] 
    VE_line = f[446] 
    VE = re.split('=',f[446])[2] 
    newline = ID + '\t' + LO + '\t' + DI + '\t' + AZ + '\t' + VE + '\n' 
    g.writelines(newline) 

ich diesen Fehler immer gettting, Typeerror: 'Datei' Objekt hat kein Attribut '_getitem__', nachdem ich den Code in Python 2.7 laufen. Was bedeutet dieser Fehler? Muss ich den Namen einer Datei oder etwas ändern?

+0

Sie haben die Zeilen in 'Zeilen' gespeichert, nicht' f'; 'f' ist das Dateiobjekt. (Und Sie werden 'readlines()' wahrscheinlich nicht für die Ausgabedatei nennen.) – Ryan

Antwort

0

Sie versuchen, Objekt f zu indexieren, das ein file ähnliches Objekt ist, das von open() Funktion zurückgegeben wird.

Intern wird Indexierung über __getitem__ spezielle Methode implementiert, die das file Objekt nicht implementiert, das ist der Grund, dass Sie diese Fehlermeldung sehen.

Der Fehler ist in der Zeile, in der Sie versuchen, ID_lines = f[21] zuzuordnen, vielleicht möchten Sie stattdessen lines[21] zuweisen.

+0

Ich erhalte diesen Fehler, wenn ich "f [21]" in "Zeilen [21]" ändere: IndexError: Listenindex außerhalb des Bereichs – Mark

+1

@Mark: Das liegt wahrscheinlich daran, dass Sie die Zeilen, die Sie von 'f' gelesen haben, mit einer leeren Liste von Zeilen überschreiben, die von' g' gelesen werden (was abgeschnitten wird, wenn Sie es mit Modus '" w + "' öffnen). – Blckknght

+0

Ok. Danke euch allen!!! – Mark

Verwandte Themen