Как продолжить запись в файл, если его необходимо открывать несколько раз?
Я пишу Телеграм бота на Python и у меня есть необходимость записывать некоторые значения в текстовый файл. Я пишу
def writeInLog(string):
logs = open('Logs.txt', 'w')
logs.write(str(time.ctime(time.time())) + ": " + string + '\n')
logs.close()
Но в таком случае он каждый раз перезаписывает строку, удаляя то, что было раньше. Если я выношу logs = open('Logs.txt', 'w') за функцию, и удаляю logs.close() то он вовсе ничего не пишет. Если оставить logs.close(), то он выдаёт ошибку при второй записи. В интернете не нашёл подходящего решения. Заранее спасибо за разъяснение моей проблемы.
Ответы (2 шт):
Судя по названию файла, вы записываете логи. Это можно реализовать намного проще с помощью встроенной библиотеки logging. С помощью настройки логера можно записывать в файл или же использовать иные Handler для оброботки логов. Так же возможно настроить вид логов для вашей задачи!
Режим доступа к открываемому файлу у вас 'w', а это значит файл открывается для записи и указатель стоит в начале файла. Соответственно при следующем открытии данные перезаписываются. Используйте режим 'a' - открытие с добавлением данных в конец файла.
Так же лучше использовать следующую конструкцию, она исполнит нужные инструкции и автоматически закроет файл, после выполнения
def function(string):
with open('file.txt', 'a') as logs:
logs.write(string) // ваши действия со строкой