2016-04-10 2 views
0

Я кодирую викторину, и после того, как студент завершает викторину, при сохранении баллов я стараюсь, чтобы последние три оценки учащегося сохранялись в их именах. Если они еще не завершили викторину, для них в текстовом файле будет написана новая строка.ValueError: вам нужно больше, чем одно значение для распаковки

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

И это ошибка:

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

Вы пробовали посмотреть, что такое 'line'? – jonrsharpe

+0

Возможный дубликат [ValueError: требуется больше 1 значения для распаковки] (https://stackoverflow.com/questions/19749077/valueerror-need-more-than-1-value-to-unpack) –

ответ

0

Ваш line не запятая в нем. Поэтому попытка распаковать его на две переменные не удастся после расщепления (поскольку разделительный разделитель не существует в строке). Распечатайте свои строки, чтобы отладить это и посмотреть, что на самом деле содержится в ваших строках.

+0

Выполняю ли я это по просто удалив запятую – user6173661

+0

Нет. Вы пытаетесь распаковать 2 значения, но вы получите только 1 назад. Чтобы получить 2 значения, вам нужно действительно иметь какой-то разделитель в вашей строке. Если вам просто нужна сама строка, используйте 1 переменную и полностью удалите раскол. – Idos

+0

Извините, что беспокою вас, но я не знаю, что означает разделитель. – user6173661

1

Это сообщение об ошибке указывает, что в файле, который вы пытаетесь прочитать, нет символа ,.

Смежные вопросы