2017-09-09 4 views
0

haben Hallo dies ist mein Code:Python - Typeerror: Argument muss ein "Write" -Methode

def update_thing(): 
     stud_ID = str(ID_num.get()) 
     stud_name = str(name.get()) 
     stud_course = str(Crs.get()) 
     stud_year = str(Yr.get()) 
     replace = stud_ID +','+ stud_name +','+ stud_course +','+ stud_year 
     empty = [] 




     with open(file_op, 'wb') as fop: 
      Swriter = csv.writer(file_op, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL) 
      for row in fop: 
       if row[0:9] == stud_ID: 

        Swriter.writerow([empty]) 
        Swriter.writerow([replace]) 
        msg = Label(upd_win, text="Updated Successful", font="fixedsys 12 bold").place(x=3,y=120) 
       if not row[0:9] == getID: 
        msg1 = Label(upd_win, text="Updated Failed", font="fixedsys 12 bold").place(x=3,y=120) 


     fop.close() 

Dieser Code ersetzt die Zeile, die es über ID-Nummer findet. Wenn es also die ID-Nummer findet, ersetzt es diese Zeilen durch Leeren und Schreiben der neu eingegebenen Zeilen. Jedoch habe ich auf der Linie bin

Swriter = csv.writer(file_op, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL) 

ein Problem mit einem Fehler aufweisen, hat es einen Fehler: Typeerror: Argument muss eine „Schreiben“ Methode hat. Ich weiß wirklich nicht, warum ich das verstehe.

file_op 

ist der Dateiname, den ich von den Werten erhielt, die in der GUI eingegeben wurden. Jede Hilfe wird wirklich geschätzt. Vielen Dank!

+0

'fop.close()' ist nicht notwendig, –

+1

Ich denke, Sie wollen 'fop' als erstes Argument an' csv.writer() 'übergeben, anstatt an' file_op'. –

Antwort

1

Sie öffnen "Geck" Datei, sondern versuchen, "file_op"

Sie es so haben müssen zu schreiben: durch die Art und Weise

with open("your filename string", 'wb') as file_op: 
      Swriter = csv.writer(file_op, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL) 
Verwandte Themen