Функции json. Сохранение данных Python
Большинство программ запрашивают у пользователей информацию, например вводят личные данные, настройки игры и т.д. Когда пользователь закрывает программу или покидает ваше приложение, введенные данные лучше сохранить, чтобы пользователь не вводил их при каждом посещение. Простейший способ сохранения данных основан на использовании модуля json.
| Содержание страницы: |
|---|
| 1. Функции json.dump() и json.load() |
| 2. Сохранение и чтение данных, сгенерированных пользователем |
1. Функции json.dump() и json.load() в Python
Модуль json обеспечивает запись простых данных Python в файл и загружает данные из файла при следующем запуске программы. Формат данных json не привязан к Python, поэтому данные в этом формате могут передаваться программам, написанные на других языках программирования. Формат JSON(JavaScript Object Notation) был разработан для JavaScript, а после стал использоваться во многих языках программирования. Модуль json может использоваться для обмена данными между программами.
Приведем пример простой программы, которая сохраняет список чисел в память с помощью функции json.dump() и вторую программу, которая читает этот список c помощью функции json.load() обратно в память.
import json
numbers = [1, 2, 3, 4, 5]
filename = 'numbers.json'
with open(filename, 'w') as f:
json.dump(numbers, f)
В начале импортируем модуль json. Затем создаем список numbers. В переменной filename присваиваем название файла, в которым будем сохранять список. Обычно для таких файлов принято использовать расширение .json, указывающее что данные хранятся в формате JSON. Затем файл открывается в режиме записи ' w '. В конце функция json.dump() сохраняет список numbers в файле 'numbers.json'.
Данная программа ничего не выводит, но если открыть папку, в которой написана программа, то там появится файл numbers.json, внутри которого хранится наш список.
[1, 2, 3, 4, 5]
Теперь напишем вторую программу, которая читает список обратно в память с помощью функции json.load().
import json
filename = 'numbers.json'
with open(filename) as f:
numbers = json.load(f)
print(numbers)
В начале импортируем модуль json. В переменной filename используем тот же файл, в который ранее были записаны данные 'numbers.json'. Далее файл открываем в режиме чтения. Данные с помощью функции json.load() загружаются и сохраняются в переменную numbers и с помощью функции print выводятся на экран:
[1, 2, 3, 4, 5]
Модуль json позволяет организовать простейший обмен данными между программами.
2. Сохранение и чтение данных, сгенерированных пользователем на Python
При работе с данными, сгенерированными пользователем, можно использовать модуль json. Без сохранения информация о пользователе будет потеряна при остановке программы. Приведем пример программы, которая запрашивает у пользователя имя при первом запуске и выводит его при последующих запусках программы:
import json
name = input("Введите ваше имя: ")
filename = 'name.json'
with open(filename, 'w') as f:
json.dump(numbers, f)
print(f"Добро пожаловать на сайт {name}!")
В начале программа запрашивает имя пользователя с помощью функции input и сохраняет имя в переменной name. Далее открываем файл, находящийся в переменной filename в режиме записи ' w ' и с помощью функции json.dump() сохраняем имя пользователя в файле. Запустив эту программу, мы получим:
Введите ваше имя: Артур
Добро пожаловать на сайт Артур!
Теперь приведем пример программы, которая приветствует пользователя уже известного ей и сохраненного в файле:
import json
filename = 'name.json'
with open(filename) as f:
name = json.load(f)
print(f"С возвращением {name}!")
Программа читает информация из файла 'name.json' и сохраняет в переменную name. После этого программы выводит приветствие на экран:
С возвращением Артур!
Теперь эти две программы можно объединить в одну. Когда программа будет запускаться, Python должен взять имя из файла, если это возможно, если файла 'name.json' не существует, запросить имя и сохранить на будущее. Так как в случае отсутствия файла будет возникать ошибка, воспользуемся блоком try-except.
import json
filename = 'name.json'
try:
with open(filename) as f:
name = json.load(f)
except FileNotFoundError:
name = input("Введите ваше имя: ")
with open(filename, 'w') as f:
json.dump(numbers, f)
print(f"Добро пожаловать на сайт {name}!")
else:
print(f"С возвращением {name}!")
В начале программа пытается открыть файл 'name.json'. Если файл существует и не возникает ошибка FileNotFoundError, то выводится сообщение из блока else. Если программа запускается впервые и файла не существует, возникает ошибка и пользователю предлагают ввести имя. При первом выполнение программы результат выглядит так:
Введите ваше имя: Жак
Добро пожаловать на сайт Жак!
Если программа была выполнена хоть один раз, то результат выглядит так:
С возвращением Жак!
Далее: Тестирование функций и классов на Python
Назад: Файлы и исключения в Python