2016-04-10 47 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

你有没有试过看'线'是什么? – jonrsharpe

+0

[ValueError:需要多个值才能解包]可能的重复(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

此错误消息表明您尝试读取的文件中没有,字符。

相关问题