Запись в файл при итерации

При следующем коде в файл записывается только последний результат итерации. Не подскажите, в чем проблема?

import requests
class Countrie():

  def __init__(self, url, file):
    self.url = url
    self.file = file
  
  def create_link(self):
    response = requests.get(self.url).json()
    for countrie in response:
      link = "https://en.wikipedia.org/wiki/" + countrie["name"]["official"]
      with open(self.file, "w", encoding = "UTF-8") as f:
        f.write(countrie["name"]["official"] + ":" + link)

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

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

при каждом новом открытии файла на запись его содержимое исчезает. Вынести открытие файла за цикл for. Либо открывайте в режиме a, а не w

→ Ссылка
Автор решения: Kers

перепишите примерно так:

  def create_link(self):
    response = requests.get(self.url).json()
    with open(self.file, "w", encoding = "UTF-8") as f: # Открываем до цикла
        for countrie in response:
            link = "https://en.wikipedia.org/wiki/" + countrie["name"]["official"]   
            f.write(countrie["name"]["official"] + ":" + link) # пишем в цикле

Таким образом вы не будете перезаписывать файл на каждой итерации а будете его дополнять

→ Ссылка