Python записывает только один элемент в exel файл

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

for mark_etc in marks_etc:
    if count == 0:
        art = driver.find_elements_by_css_selector('.properties-list__right')[0]
        time.sleep(2)

        mark = mark_etc.find_elements_by_tag_name('li')[2]
        time.sleep(2)

        model = mark_etc.find_elements_by_tag_name('li')[3]
        time.sleep(2)

        generation = mark_etc.find_elements_by_tag_name('li')[4]
        time.sleep(2)

        main_info_2.append({
            'art': art.text,
            'mark': mark.text,
            'model': model.text,
            'generation': None,
            'generation2': None,
            'generation3': None
            }) 

        save_file_2(main_info_2, file_2)

    else:
        pass

    count += 1

    if count == 1:
        generation = mark_etc.find_elements_by_tag_name('li')[4]
        time.sleep(2)

        mark = mark_etc.find_elements_by_tag_name('li')[2]
        time.sleep(2)

        model = mark_etc.find_elements_by_tag_name('li')[3]
        time.sleep(2)

        main_info_2.clear()

        main_info_2.append({
            'art': art.text,
            'mark': mark.text,
            'model': model.text,
            'generation': generation.text,
            'generation2': None,
            'generation3': None
            })

        save_file_2(main_info_2, file_2)

    else:
        pass

    if count == 2:
        generation2 = mark_etc.find_elements_by_tag_name('li')[4]
        time.sleep(2)

        mark = mark_etc.find_elements_by_tag_name('li')[2]
        time.sleep(2)

        model = mark_etc.find_elements_by_tag_name('li')[3]
        time.sleep(2)

        main_info_2.clear()

        main_info_2.append({
            'art': art.text,
            'mark': mark.text,
            'model': model.text,
            'generation': generation.text,
            'generation2': generation2.text,
            'generation3': None
            })

        save_file_2(main_info_2, file_2)
        
    else:
        pass

    if count == 3:
        generation3 = mark_etc.find_elements_by_tag_name('li')[4]
        time.sleep(2)

        mark = mark_etc.find_elements_by_tag_name('li')[2]
        time.sleep(2)

        model = mark_etc.find_elements_by_tag_name('li')[3]
        time.sleep(2)

        main_info_2.clear()

        main_info_2.append({
            'art': art.text,
            'mark': mark.text,
            'model': model.text,
            'generation': generation.text,
            'generation2': generation2.text,
            'generation3': generation3.text
            })

        save_file_2(main_info_2, file_2)

    else:
        pass

Также есть функция записи в файл

def save_file_2(items, path):
    with open(path, 'w', newline='') as file:
        writer = csv.writer(file, delimiter=';')
        writer.writerow(['Артикул', 'Марка' , 'Модель' , 'Поколение_1', 'Поколение_2', 'Поколение_3'])
        for item in items:
            writer.writerow([item['art'], item['mark'] , item['model'] , item['generation'], item['generation2'], item['generation3']])

Ответы (1 шт):

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

Солгасно документации mode = "w" означает, что файл открывается на запись, содержимое файла удаляется, если файла не существует, создается новый.

Для того чтобы дописать в существующий файл необходимо использовать "a", открывает файл для добавления если он существует

...
with open(path, 'a', newline='') as file:.... # здесь
→ Ссылка