Функции 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