2016-04-10 5 views
0

私はクイズをコーディングしています。クイズを完了した後、スコアを保存するときに、最後の3つのスコアが名前に保存されるようにします。以前にクイズを完了していない場合は、テキストファイル内に新しい行が書き込まれます。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:1つ以上の値を解凍する必要があります]の複製があります(https://stackoverflow.com/questions/19749077/valueerror-need-more-than-1-value-to-unpack) –

答えて

0

あなたlineはそれにカンマを持っていません。したがって、2つの変数に展開しようとすると、分割後に失敗します(分割された区切り文字が行内に存在しないため)。これをデバッグするためにラインを印刷し、実際にラインに含まれているものを確認してください。

+0

カンマを単に削除するだけです。 – user6173661

+0

いいえ2つの値をアンパックしようとしていますが、1つしか戻っていません。 2つの値を取得するには、あなたの行に実際に何らかの区切り文字を入れる必要があります。その行自体が必要な場合は、1つの変数を使用して分割を完全に削除します。 – Idos

+0

あなたを気にして申し訳ありませんが、デリミタが意味するものは分かりません – user6173661

1

このエラーメッセージは、読み取ろうとしているファイルに,文字がないことを示しています。

関連する問題