Попытка прочитать файл, а затем перезаписать файл, заменив старые данные новыми данными - PullRequest
0 голосов
/ 01 мая 2020

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

Это мой код:

def editStudent(classfile):
    with open(f'Class {classfile}.txt','r+') as file:
        studentNo = int(file.readline())
        data = file.readlines()
        for i in range(0,studentNo):
            piece = data[i]
            contents = piece.split(',')
            name = contents[0]
            score = contents[1]
            readin = {}
            readin[name] = int(score)
            replacement = int(input('Please enter a new score for ' + name + ' > '))
            readin[name] = int(replacement)
            for key,value in readin.items():
                studentdata = '{},{}\n'.format(key, value)
                file.close()
                with open(f'Class {classfile}.txt','w') as file:
                    file.write(str(studentNo) + '\n')
                    file.write(studentdata)

Вот как выглядит текстовый файл:

2
Max Sinclair,100
Random Guy,50

В первой строке файла указывается количество учеников в классе, переменная, которую я использую для создания al oop внутри моей функции, чтобы сообщить Программа, сколько студентов необходимо заменить.

Это вывод, когда я запускаю программу и вводю новые оценки для каждого учащегося:

2
Max Sinclair,100
Random Guy,50
Max Sinclair,99
Random Guy,49

1 Ответ

0 голосов
/ 01 мая 2020

Если вы хотите перезаписать весь файл, который вам нужен, сначала откройте его с помощью 'r', затем закройте его с помощью .close (), а затем снова откройте файл с помощью 'w', чтобы записать файл. Когда вы пишете в файл, который не является пустым, вы стираете все его содержимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...