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 шт):

Автор решения: asanisimov

Вам нужно предотвратить возможность одновременного открытия файла двумя ботами. Для проверки использования файла можно использовать следующую функцию. Тестировалось только на 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% предотвратит одновременный доступ к файлу.

А вообще, я бы использовал брокера для передачи сообщения между ботами, тем более что нет необходимости хранить данные.

→ Ссылка