Csv как удалить текущую строку
Пишу бота который будет каждый раз заходить проверять мой файл csv, и если там что то записано , то отправлять и потом удалять из csv файла то что отправил, и еще в этот файл будет заходить другой бот который как раз будет записывать данные, можно ли так сделать?
вот код
import csv
import telebot
import os
import time
bot = telebot.TeleBot("API")
time.sleep(5)
@bot.message_handler(commands=['start'])
def start(message):
time.sleep(6)
while True:
bot.send_message(message.chat.id, "Проверка началась")
with open('users.csv') as File:
reader = csv.reader(File)
for row in reader:
time.sleep(5)
print(row)
bot.send_message(message.chat.id,(row))
bot.polling()
Ответы (1 шт):
Вам нужно предотвратить возможность одновременного открытия файла двумя ботами. Для проверки использования файла можно использовать следующую функцию. Тестировалось только на linux.
import psutil
def has_handle(fpath):
for proc in psutil.process_iter():
try:
for item in proc.open_files():
if fpath == item.path:
return True
except Exception:
pass
return False
Если файл используется другим процессом, функция вернет True. Функцией должны пользоваться оба бота. Но я не думаю, что даже эта проверка на 100% предотвратит одновременный доступ к файлу.
А вообще, я бы использовал брокера для передачи сообщения между ботами, тем более что нет необходимости хранить данные.