Делаю парсер по расписанию, который будет дописывать новые контакты в существующий файл, а так же в отдельный файл только новые контакты. Уперся в то, что при записи новые строки пишуться не в единичном экзепрляре, а по несколько повторений сразу. Т.е. первый новый контакт мне записывает 10 раз, второй 20, третий 30 и тд. Как это исправить ? Для примера, чтоб не ломать код самого парсера, написал неольшой новый код, вместо блока парсинга, воспользовался библиотекой RandomWords. Вот собственно сам код:
import schedule
from random_word import RandomWords
import asyncio
new_words = []
old_words = []
async def working():
word = RandomWords().get_random_word()
with open('old_words.txt', 'r') as f:
lines = [line.strip() for line in f.readlines()]
for _ in lines:
if word in old_words:
continue
else:
new_words.append(word)
print(word)
return new_words, old_words
async def writer():
with open('old_words.txt', 'a') as f:
for line in new_words:
f.write(f'{line}\n')
with open('new_words.txt', 'a') as f:
for line in new_words:
f.write(f'{line}\n')
async def gather():
tasks = []
tasks.append(asyncio.create_task(working()))
tasks.append(asyncio.create_task(writer()))
await asyncio.gather(*tasks)
def main():
asyncio.run(gather())
if __name__ == "__main__":
schedule.every(2).seconds.do(main)
while True:
schedule.run_pending()