• Как сохранять процесс обработки данных словаря в python?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    а если запустить цикл повторно, файл в котором хранятся просмотренные фильмы перезаписывается

    Вы перезаписываете весь файл целиком каждый раз:
    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()
    Ответ написан
    6 комментариев