Почему мой файл не обновляется в программе?

#python

Вопрос:

Попытка удалить строки из файла на python работает просто отлично, но он не обновляется до тех пор, пока я не перезапущу программу… как я могу сделать так, чтобы он удалял строки и обновлял в программе, я использую очереди, так как отправляю запросы api с элементами, чтобы отправлять их одновременно спасибо.

Пример кода:

 class auto_claimer:
    def __init__(self) -> None:
        self.username_list = [user.replace("n", "") for user in open("database.txt")]
        self.mutex = Lock() 
        self.userQ = Queue()

    def reloadQ(self):
        for i in self.username_list:
            self.userQ.put(i)
        #print(len(self.username_list), "Words Successfully added to Queue")

    def Queue(self):
        while True:
            if self.userQ.qsize() < len(self.username_list) / 2:
                self.reloadQ()

    def delete(self, item):
        with open("database.txt", "r") as f:
            lines = f.readlines()
        with open("database.txt", "w") as f:
            for line in lines:
                if line.strip("n") != item:
                    f.write(line)
                    f.flush()
        print("Successfully removed {} from the text file".format(item))
 

Комментарии:

1. Что it такое «в it doesnt update «?

2. например, когда я удаляю что-то из текстового файла, оно успешно удаляет его, но программа все равно сообщает мне, что элемент все еще находится в файле

3. Как это the program still tells me that the item is still in the file ?

4. поскольку я отправляю запросы api с именами пользователей в файле, когда имя пользователя доступно, оно удаляет его из файла, но когда пользователь стал доступен, он просто продолжал рассылать спам «»Успешно удалено … из текстового файла»

5. это означает, что файл остается тем же, что и в момент его открытия программой.

Ответ №1:

Когда вы продолжаете открывать файл для чтения, а затем открываете его снова, чтобы перезаписать все его содержимое в той же области, не закрывая его, — в любом случае это плохая практика.

По большей части многие изменения в файлах на python вступают в силу только после закрытия файла, поэтому, если ваш скрипт редактирует, оставляет открытым и читает файл, он не увидит изменения. Поэтому закрывайте файл каждый раз, когда вы завершаете его чтение или запись.

 def delete(self, item):
        with open("database.txt", "r") as f:
            lines = f.readlines()
            f.close()
        with open("database.txt", "w") as f:
            for line in lines:
                if line.strip("n") != item:
                    f.write(line)
                    f.flush()
            f.close()
        print("Successfully removed {} from the text file".format(item))