2016-04-27 2 views
-1

Я поставлена ​​задача войти студенческие оценки для викторины по математикеПроблем пишущих вывода в файл CSV

Ниже моя задача:

Учитель хочет, чтобы использовать результаты от студентов, принимающих эти викторин запишите их производительность. Система должна хранить> последние три оценки для каждого учащегося.

Каждый раз, когда я запускаю мой код, данные не добавляются в файл CSV, а также «состояние», текстовый файл остается на 0, так что даже если данные добавляются баллы не будут обновляться, а вместо этого добавляются к строке

Ниже мой код:

import csv 
import os 

name = input("enter your name: ") 
classroom_num = input("enter your classroom number: ") 
score = 5 
print ("%s, you scored %d/10 questions correctly"%(name,score)) 
status = open ("state.txt","w") #Every time program is run +1 is added, so that column 1-3 are updated 
with open ("state.txt","r") as f: 
    state = f.read() 
    if os.stat("state.txt").st_size == 0: 
     status.write ("0") 

state_ints = [ int(x) for x in state.split() ] #converts into int 
addone = 1 
if state_ints == 3: #If program is run more than 3 times the value in text file reset to 0 
    state_ints = 0 
    status.write (state_ints) 
with open("Classroom {}.csv".format(classroom_num),"a+") as f: 
    rows = csv.reader(f) 
    for row in rows: 
     if row in rows in row[0] != (name) in row: #Checks if name exists in file (if so name isn't appended to column) 
      state_ints.append(addone) #Adds one everytime program is run so that score can be replaced for row 1-3 
      status.write (state_ints) 
      name_row = (row [0]) 
      name_row.append(name) 
      score_row = (row (state_ints)) 
      score_row.append(score) 
     else: 
      state_ints.append(addone) 
      status.write (state_ints) 
      score_row = (row [state_ints]) 
      score_row.append(score) 
status.close() 

ответ

1

вы перезагружаем state_ints перед записью в файл. Сделайте это после того, как вы напишете файл. Или вы всегда будете писать 0 в файл.

2

В строке 7 кода вы открываете файл в режиме записи: status = open ("state.txt","w") Так содержимое этого файла, если таковой существует, erased.Therefore операция чтения в строках 8-9 не будет найти любую вещь читать следующим образом:

with open ("state.txt","r") as f: 
    state = f.read() 

Вы можете прочитать ваш файл, выполнить ваши обновления, а затем снова загрузить свои данные обратно в файл.