Функции json. Сохранение данных Python

Установка Python 

Выбор текстового редактора 

Запуск программ Python в командной строке 

Числа и арифметические операторы Python 

Строки и функция print в Python 

Списки и кортежи в Python 

Сегментация последовательностей в Python 

Цикл for и функция range в Python 

Команда if и функция input в Python 

Словари в Python 

Множества в Python 

Цикл while в Python 

Функции в Python 

Классы в Python 

Файлы и исключения в Python 

Функции json. Сохранение данных Python 

Тестирование функций и классов на Python

Python массивы. Библиотека NumPy

Большинство программ запрашивают у пользователей информацию, например вводят личные данные, настройки игры и т.д. Когда пользователь закрывает программу или покидает ваше приложение, введенные данные лучше сохранить, чтобы пользователь не вводил их при каждом посещение. Простейший способ сохранения данных основан на использовании модуля 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