Как создавать новый файл при каждом обращении к функции
Делаю телеграм бота на Python. Нужно что бы бот записывал сообщение пользователя в .txt файл. Но при использовании одновременно несколькими пользователями одновременно программа ломается. Вот код:
import telebot
bot = telebot.TeleBot("1181859447:AAF6kJmz8eFSljDs06nZmMSgTx8-dPaU6yg")
@bot.message_handler(commands=['start'])
def privetctive(message):
sent = bot.send_message(message.chat.id, "Здравствуйте, как я могу к ваv обращаться?")
bot.register_next_step_handler(sent, Hello)
def Hello(message):
bot.send_message(message.chat.id,
'Здравствуйте, {name}. К кому роду деятельности вы относитесь?'.format(name=message.text))
doc = open('file.txt', 'w', encoding='utf-8')
doc.write("Имя заказчика - {imia}\n".format(imia=message.text))
bot.polling()
Я так понял что можно создавать каждому пользователю новый файл. Если кто знает как это делать пожалуйста помогите.
Ответы (1 шт):
Автор решения: D. Violet
→ Ссылка
почему все так любят записывать в текстовый файл? для тестов ок, проверить пишет ли то, что нужно, но для прода?
когда я учился, тоже боялся слов "БД", "скуль", но чем сложнее, тем интересней для себя, разве нет?
вот вам пример записи в SQLite:
import sqlite3
def commit_db(first, id_tlgrm):
conn = sqlite3.connect('my_first_db.db')
cursor = conn.cursor()
db_data = [(first, id_tlgrm)]
cursor.executemany("INSERT INTO users VALUES (?, ?)", db_data) # Запись данных в БД
conn.commit() # Сохранение данных в БД
def Hello(message):
bot.send_message(message.chat.id, '%text%')
commit_db(message.text, message.chat.id)
UPD:
def Hello(message):
bot.send_message(message.chat.id, '%text%')
f = open('file.log', 'a')
f.write(datetime.now().strftime("%d/%m/%Y %H:%M:%S") + ' ' + str(message.chat.id) + ':' + str(message.text) + '\n')
f.close()
файл будет дозаписываться