2015-03-14 4 views
-2

Когда я запускаю код мю он говорит:Python сохранения последних 3 баллов

для линии в scoresFile: ValueError: операции ввода/вывода на закрытом файле.

Я пробовал много вещей, но это не изменит результат. Мой код выглядит так:

SCORE_FILENAME = "Class1.txt" 
MAX_SCORES = 3 

try: scoresFile = open('Class1.txt', "r+") 
except IOError: scoresFile = open('Class1.txt', "w+") # File not exists 
actualScoresTable = [] 
for line in scoresFile: 
     tmp = line.strip().replace("\n","").split(",") 

     for index, score in enumerate(tmp[1:]): 
      tmp[1+index] = int(score) 

     actualScoresTable.append({ 
           "name": tmp[0], 
           "scores": tmp[1:], 
           }) 
     scoresFile.close() 

new = True 
for index, record in enumerate(actualScoresTable): 
    if record["name"] == pname: 
     actualScoresTable[index]["scores"].append(correct) 
     if len(record["scores"]) > MAX_SCORES: 
      actualScoresTable[index]["scores"].pop(0) # OR del   actualScoresTable[index]["scores"][0] 
    new = False 
    break 
if new: 
    actualScoresTable.append({ 
          "name": pname, 
          "scores": [correct], 
          }) 

scoresFile = open(SCORE_FILENAME, "w+") # Truncating file (write all again) 
for record in actualScoresTable: 

for index, score in enumerate(record["scores"]): 
    record["scores"][index] = str(score) 



scoresFile.write("%s,%s\n" % (record["name"],(record["scores"]))) 
scoresFile.close() 

Может кто-нибудь помочь мне исправить это.

ответ

0

Проблема заключается в том, что линия scoresFile.close() находится в первом цикле. Если файл содержит более одной строки, он будет закрыт к тому моменту, когда вы попытаетесь получить доступ ко второй строке. Я думаю, что эта ошибка исчезнет, ​​если вы переместите эту линию за пределы цикла.

0

Извлеките scoresFile.close() из вашей петли. Вы закрываете его после прочтения первой строки.

+0

Сейчас придумывают этой ошибки –

+0

TMP [1 + индекс] = INT (оценка) ValueError: неверный буквальным для Int() с основанием 10: "[ '2']" –

+0

Теперь вы получите на самом деле разобрать данные в вашем файле. Я оставляю это вам, или вы можете отправить другой вопрос, если вы не можете понять это. Попытайтесь выяснить, что из себя представляет, прежде чем спрашивать о SO - это для вашего же блага! –

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