#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))