Добавление правильных значений из списка - PullRequest
0 голосов
/ 20 апреля 2020

Я создаю бота в Instagram и храню имена пользователей, за которыми бот следовал, в файле file.txt.

    unique_photos = len(pic_hrefs)  # TODO Let this run once and check whether this block of code works or not
    followers_list = []  # Contains the names of the people you followed

    for pic_href in pic_hrefs:
        driver.get(pic_href)
        sleep(2)
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        try:
            # Like this picture
            driver.find_element_by_xpath("//*[@aria-label='Like']").click()
            print("Picture liked")  # TODO After checking delete this line

            follow_button = driver.find_element_by_class_name('bY2yH')

            # Follow the user if not followed already
            if follow_button.text == "•\n" + "Follow":
                follow_button.click()
                followed = driver.find_element_by_class_name('e1e1d')
                followers_list.append(followed.text)
                with open("file.txt", 'a') as file:
                    file.write(",".join(followers_list))
                    file.write(",")

            else:
                continue

            for second in reversed(range(0, 3)):
                print_same_line("#" + tag + ': unique photos left: ' + str(unique_photos)
                                + " | Sleeping " + str(second))
                sleep(1)
        except Exception:
            sleep(2)
        unique_photos -= 1

Это конечный результат в файле file.txt:

kr.dramas_,kr.dramas_,marcelly.lds,kr.dramas_,marcelly.lds,espn

Понятно, что проблема в том, что, когда я добавляю весь список последователей (который содержит все имена пользователей люди, за которыми следил бот) имена повторяются. Поэтому мне нужен способ только добавлять новые имена. И я знаю, что могу просто поменять код на 'w', чтобы каждый раз создавать новый файл, но это создает проблему, потому что после того, как я остановлю бота и если я не откажусь от пользователей из этого списка и снова запущу бота Я потеряю все имена из файла, которые мне не нужны.

Поэтому мне нужны предложения, чтобы после остановки бота файл file.txt выглядел так:

kr.dramas_,marcelly.lds,espn,

1 Ответ

0 голосов
/ 20 апреля 2020

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

followers_list = [] # will be populated with follower names

with open("file.txt", 'r') as file:
  file_names = file.readline().split(",")

for follower in followers_list:
  if follower not in file_names:
    file_names.append(follower)

with open("file.txt", 'w') as file:
  file.write(",".join(file_names))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...