Запись в файл при итерации
При следующем коде в файл записывается только последний результат итерации. Не подскажите, в чем проблема?
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) # пишем в цикле
Таким образом вы не будете перезаписывать файл на каждой итерации а будете его дополнять