2016-04-10 4 views
0

Ich schreibe ein Quiz und nachdem der Schüler das Quiz abgeschlossen hat, versuche ich beim Speichern der Ergebnisse sicherzustellen, dass die letzten drei Punkte eines Schülers in seinen Namen gespeichert werden. Wenn sie noch kein Quiz abgeschlossen haben, wird eine neue Zeile für sie in der Textdatei geschrieben.ValueError: mehr als einen Wert zum Entpacken benötigt

filename = (str(class_number) + 'txt') 
with open(filename, 'a') as f: 
    f.write(str(name) + " : " + str(score) + '\n') 

with open(filename) as f: 
    f.seek(0) 
    scores = f.readline() 
    from collections import deque 
    for line in scores: 
     name, score = line.rstrip('\n').split(',') 
     score= int(score) 
     if name not in filename: 
      filename[name] = deque(maxlen=3) 
     temp_q = filename[name] 
     temp_q.append(str(score)) 
     filename[name] = temp_q 

    filehandle = open (filename, 'w') 
    for key,values in filename.iteritems(): 
     filehandle.write(name + ',') 
     filehandle.write (','.join(list(values)) + '\n') 
    filehandle.close() 

Und das ist der Fehler:

name, score = line.rstrip('\n').split(',') 
Value error need more than 1 value to unpack 
+0

Haben Sie versucht zu sehen, was "line" ist? – jonrsharpe

+0

Mögliches Duplikat von [ValueError: benötigt mehr als 1 Wert zum Entpacken] (https://StackOverflow.com/questions/19749077/valueerror-need-more-than-1-value-to-unpack) –

Antwort

0

Ihre line kein Komma in ihm. Daher schlägt der Versuch, es in zwei Variablen zu entpacken, nach dem Aufteilen fehl (da der Aufteilungsbegrenzer in der Zeile nicht existiert). Drucken Sie Ihre Zeilen, um dies zu debuggen und zu sehen, was in Ihren Zeilen enthalten ist.

+0

Tue ich dies durch einfach das Komma entfernen – user6173661

+0

Nein. Sie versuchen, 2 Werte auszupacken, aber Sie erhalten nur 1 zurück. Um 2 Werte zu erhalten, müssen Sie wirklich eine Art Trennzeichen in Ihrer Zeile haben. Wenn Sie nur die Linie selbst wollen, dann benutzen Sie 1 Variable und entfernen Sie den Split ganz. – Idos

+0

Entschuldigen Sie die Störung, aber ich weiß nicht, was Trennzeichen bedeutet – user6173661

1

Diese Fehlermeldung zeigt an, dass in der Datei, aus der Sie zu lesen versuchen, kein , Zeichen vorhanden ist.

Verwandte Themen