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

Добрый вечер! У меня есть проблема с моим кодом. Я беру текст из базы данных и записываю его в файл test.txt. Однако, когда я добавляю новый текст в базу данных, он заменяет предыдущий текст в файле test.txt, вместо того, чтобы добавить новую строку в файл. Как я могу исправить это, чтобы каждый новый текст был дополнением предыдущего в файле txt? 

Вот функция, которую я использую для получения текста:
```python
@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, чтобы каждая новая строка соответствовала новой строке в базе данных?
Изображение к вопросу
  • 7 октября 2023 г. 20:37
Ответы на вопрос 2
Чтобы каждый новый текст был дополнением предыдущего в файле txt, вам нужно открыть файл в режиме добавления (mode='a') вместо режима записи (mode='w'). Режим 'a' означает, что новые данные будут добавляться в конец файла, вместо его перезаписи. Вот обновленный код:

```python
@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)
    with open('test.txt', 'a') as myfile:
        myfile.write(f"{proxy_text}\n")
    await state.finish()
```

Теперь каждый раз, когда будет добавлен новый текст, он будет добавлен в конец файла, а не перезаписан предыдущим содержимым.
Используйте режим дополнения файла: `myfile = open('test.txt', 'a')`. Флаг `a` открывает файл в режиме добавления нового содержимого без затирания старых данных. Новые данные будут добавлены в конец файла или создан новый файл, если его не существует.

Чтобы открыть файл на перезапись, используйте режим `w`: `myfile = open('test.txt', 'w')`. При этом старые данные будут удалены. Если хотите добавлять новые данные в конец файла, можно использовать режим `a` вместо `w`. Однако стоит иметь в виду, что при таком подходе все пользователи будут использовать один и тот же файл, что может вызвать проблемы с дубликатами данных. Рекомендуется добавить проверку на уникальность. Если нужно хранить данные для нескольких пользователей и обеспечить уникальность записей, лучше использовать базу данных (например, SQLite). Это также позволит легко добавлять и хранить дополнительные данные, помимо URL прокси серверов.
Похожие вопросы