Могу ли я обновить часть текстового файла? Я создал систему входа в систему и хочу подсчитать, сколько раз пользователь вошел в систему - PullRequest
1 голос
/ 01 октября 2019

Я хочу спросить сообщество, как я могу обновить часть текстового файла без перезаписи текстового файла.

Проект, над которым я сейчас работаю, называется системой входа в систему.

Текстовый файл содержит следующие значения: - имя пользователя - пароль - дата + время первой регистрации - сколько раз пользователь вошел в систему.

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

  • search google
  • stackoverflow

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

Ответы [ 2 ]

3 голосов
/ 02 октября 2019

Единственный способ сделать это - переписать файл, если вы используете текстовые файлы.

Начните с открытия файла, выполнив:

with open(file, "r") as read_file:
    string=read_file.read()

Затем замените все, что естьвам нужно в строке, однако, как вы хотите это сделать, так как это строка в тот момент. Затем просто напишите все это снова, выполнив:

with open(file, "w") as write_file:
    write_file.write(string)
2 голосов
/ 02 октября 2019

В общем, вы не можете. Текстовый файл - это последовательность байтов в фиксированных местах.

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

Приложение, которое вы описываете, предназначено для некоторого приложения базы данных, в котором файл представляет собой набор записей, адресованных косвенным образом. ,Также рассмотрите возможность использования структуры JSON.


Для замены строки такой же длины используйте методы tell и seek .

Используйте tell, чтобы вспомнить положение интересующей вас строки. Измените значение, вернитесь в его положение с помощью seek, а затем write новой строки поверх оригинала.

Я все еще рекомендую перейти к представлению базы данных;перезапись строк - хрупкий способ сохранить хранилище данных.

...