а если запустить цикл повторно, файл в котором хранятся просмотренные фильмы перезаписывается
Вы перезаписываете весь файл целиком каждый раз:
with open('iwatch.txt', 'w', encoding='utf-8') as f:
Предположу, что Вы хотите писать новые данные в конец файла:
with open('iwatch.txt', 'a', encoding='utf-8') as f:
Полный код:
import random
import json
# file
try:
with open('films.json', 'r', encoding='utf-8') as f:
films = json.load(f)
except FileNotFoundError:
films = {}
# save
def save(films):
with open('films.json', 'w', encoding='utf-8') as f:
json.dump(films, f, ensure_ascii=False, indent=4)
# main
def main():
while True:
random_film_key = random.choice(list(films))
film_value = films.get(random_film_key).replace(',', '\n')
print("Фильм: " + random_film_key, "Описание фильма: " + film_value, sep='\n')
# а где вариант 3 (ya est' Grut)?
q = input("Ты смотрел этот фильм? да - 1, нет - 0, выход - любая другая клавиша \n")
if q == '1':
with open('iwatch.txt', 'a', encoding='utf-8') as f:
f.write(random_film_key + '\n')
del films[random_film_key]
save(films)
elif q == '0':
continue
else:
break
# run
main()