Как сохранить отмеченные фильмы после завершения программы, удалить фильмы из словаря и сохранить файл с просмотренными фильмами без его перезаписи при повторном запуске программы?
Вот пример кода, который берет рандомный ключ из словаря и его значение, предлагает пользователю отметить, если пользователь отмечает его как "Смотрел", название фильма (ключ) записывается в текстовый файл, а из словаря удаляется. Как можно сохранить отмеченные фильмы и сохранить файл без его перезаписи?
```python
import random
import json
def gofilm():
try:
with open('iwatch.txt', 'r') as f:
watched_films = json.load(f)
except FileNotFoundError:
watched_films = []
with open('iwatch.txt', 'a') as f:
while True:
random_film_key = random.choice(list(films))
film_value = films[random_film_key].replace(',', '\n')
print("Фильм: " + random_film_key, "Описание фильма: " + film_value, sep='\n')
question = input("Ты смотрел этот фильм? да - 1, нет - 0\n")
if question == '1':
f.write(random_film_key + '\n')
films.pop(random_film_key)
watched_films.append(random_film_key)
elif question == '0':
continue
else:
break
with open('iwatch.txt', 'w') as f:
json.dump(watched_films, f)
gofilm()
```
Для сохранения прогресса обработки данных словаря и возможности продолжить с места остановки вам нужно сохранить текущее состояние словаря `films` в файл. Затем, при следующем запуске программы, вы должны загрузить это состояние и продолжить выполнение программы с сохраненного места.
Вот пример, как это можно сделать:
```python
import random
import json
def gofilm():
try:
with open('iwatch.txt', 'r') as f:
watched_films = json.load(f)
except FileNotFoundError:
watched_films = []
try:
with open('films.txt', 'r') as f:
films = json.load(f)
except FileNotFoundError:
films = {"Фильм1": "Описание1", "Фильм2": "Описание2", "Фильм3": "Описание3"}
with open('films.txt', 'w') as f:
json.dump(films, f)
with open('iwatch.txt', 'a') as f:
while films:
random_film_key = random.choice(list(films))
film_value = films[random_film_key].replace(',', '\n')
print("Фильм: " + random_film_key, "Описание фильма: " + film_value, sep='\n')
question = input("Ты смотрел этот фильм? да - 1, нет - 0\n")
if question == '1':
f.write(random_film_key + '\n')
films.pop(random_film_key)
watched_films.append(random_film_key)
elif question == '0':
continue
else:
break
with open('iwatch.txt', 'w') as f:
json.dump(watched_films, f)
with open('films.txt', 'w') as f:
json.dump(films, f)
gofilm()
```
В этом примере я добавил сохранение состояния словаря `films` в файл `films.txt`. При каждом запуске программы, она будет загружать состояние словаря из этого файла. Если файл не существует, то создается новый словарь с начальными значениями.
вместо перезаписи файла с просмотренными фильмами при повторном запуске цикла, можно добавлять новые данные в конец файла. Для этого измените режим открытия файла на 'a' вместо 'w':
with open('iwatch.txt', 'a', encoding='utf-8') as f: