2016-05-06 4 views
0

У меня есть файл txt, открытый в python, на который были записаны данные. Мне нужно, чтобы только 3 части данных были введены в этот файл до того, как самый старый бит данных будет удален и заменен новыми данными.Удаление данных из txt-файла в Python

Например: Учитель попросил меня создать систему на питоне, которая задает студентам 10 случайных математических вопросов, прежде чем говорить об этом викторине, студент должен ввести свое имя и номер класса.

Когда викторина завершена, их имя и оценка должны быть записаны в определенный файл class1.txt, если они принадлежат классу 1, классу2.txt, если они принадлежат классу2 и т. Д.

Эта система работает правильно, но учитель теперь спросил меня, возможно ли сохранить только 3 самых последних теста викторины в соответствующем файле.

спасибо GCSE студент, который замуровать себя

+4

http://stackoverflow.com/help/how-to-ask – Abbas

+0

Позор для являются не используя базу данных, такую ​​как Sqlite. Текстовые файлы «записи» (строки) обычно являются переменной длиной, поэтому нецелесообразно пытаться обновить один файл. Вам нужно каждый раз создавать новый файл и копировать запись по записи в новый файл, внося изменения, например, отбрасывая старые записи. – cdarke

+0

три самых последних результата викторины всех учеников одного класса или три последних результата каждого ученика? Как выглядит ваш файл? У вас есть одна строка на одного учащегося? Или одна строка за результат, или что? –

ответ

0

Вы могли бы использовать collections.deque так:

from collections import deque 

with open("file.txt", "r+") as f: 
    d = deque(f, 3) 
    d.append(new_score) # or use appendleft() 
    f.seek(0) 
    f.truncate() 
    f.writelines(d) 
Смежные вопросы