@ArtemMik
Python

Как записать текст из базы данных в txt файл делая отступы?

Доброй ночи, в моём коде берётся текст из БД и записывается в файл test.txt, но когда добавляется в БД новый текст, то он не дополняет файл test.txt а изменяет старый текст на новый

Функция получению текста:
@dp.message_handler(state=Proxy.proxy)
async def state_proxy(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        proxy_text = data['proxy'] = message.text
    await bot.send_message(message.chat.id, f"Прокси было добавлено в БД\nВаше прокси {proxy_text}")
    db.db_proxy(proxy=proxy_text)
    myfile = open('test.txt', 'w')
    myfile.write(f"{proxy_text}\n")
    await state.finish()


Как должен выглядить правильно файл txt:

6521bf58dfd26628834795.png

Каждая строка, это новая строка в БД где берётся текст
  • Вопрос задан
  • 214 просмотров
Решения вопроса 2
@aveBHS
Используйте режим дополнения файла: myfile = open('test.txt', 'a'). Флаг a (append) открывает файл в режиме добавления нового содержимого, он не затирает старые данные, а добавляет новые в конец (либо создает файл если такового не существует)
Ответ написан
Комментировать
includedlibrary
@includedlibrary
myfile = open('test.txt', 'w')
Когда открываете файл в режиме 'w', вы открываете его на перезапись. Можно вместо 'w' передать 'a', тогда всё будет записываться в конец файла. Но, во-первых, в вашем коде один файл на всех пользователей (не знаю, была ли цель сделать именно так, поэтому пишу), во-вторых, могут быть дубликаты, т.е. желательно добавить проверку на уникальность. Можно взять СУБД (если нужно хранить всё в файле, то можно использовать sqlite), тогда и работать с несколькими пользователями будет проще и проверку на укникальность самому писать не придётся. Также использование СУБД позволит в будущем без проблем хранить какие-либо ещё данные, кроме URL прокси серверов
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы