Как записать словарь в json файл python
Перейти к содержимому

Как записать словарь в json файл python

  • автор:

Работа с файлами в формате JSON#

JSON (JavaScript Object Notation) — это текстовый формат для хранения и обмена данными.

JSON по синтаксису очень похож на Python и достаточно удобен для восприятия.

Как и в случае с CSV, в Python есть модуль, который позволяет легко записывать и читать данные в формате JSON.

Чтение#

Для чтения в модуле json есть два метода:

json.load — метод считывает файл в формате JSON и возвращает объекты Python

json.loads — метод считывает строку в формате JSON и возвращает объекты Python

json.load #

Чтение файла в формате JSON в объект Python (файл json_read_load.py):

Вывод будет таким:

json.loads #

Считывание строки в формате JSON в объект Python (файл json_read_loads.py):

Результат будет аналогичен предыдущему выводу.

Запись#

Запись файла в формате JSON также осуществляется достаточно легко.

Для записи информации в формате JSON в модуле json также два метода:

json.dump — метод записывает объект Python в файл в формате JSON

json.dumps — метод возвращает строку в формате JSON

json.dumps #

Преобразование объекта в строку в формате JSON (json_write_dumps.py):

Метод json.dumps подходит для ситуаций, когда надо вернуть строку в формате JSON. Например, чтобы передать ее API.

json.dump #

Запись объекта Python в файл в формате JSON (файл json_write_dump.py):

Когда нужно записать информацию в формате JSON в файл, лучше использовать метод dump.

Дополнительные параметры методов записи#

Методам dump и dumps можно передавать дополнительные параметры для управления форматом вывода.

По умолчанию эти методы записывают информацию в компактном представлении. Как правило, когда данные используются другими программами, визуальное представление данных не важно. Если же данные в файле нужно будет считать человеку, такой формат не очень удобно воспринимать.

К счастью, модуль json позволяет управлять подобными вещами.

Передав дополнительные параметры методу dump (или методу dumps), можно получить более удобный для чтения вывод (файл json_write_indent.py):

Теперь содержимое файла sw_templates.json выглядит так:

Изменение типа данных#

Еще один важный аспект преобразования данных в формат JSON: данные не всегда будут того же типа, что исходные данные в Python.

Например, кортежи при записи в JSON превращаются в списки:

Так происходит из-за того, что в JSON используются другие типы данных и не для всех типов данных Python есть соответствия.

Как записать словарь в json файл python

JSON — простой, основанный на использовании текста, способ хранить и передавать структурированные данные.

JSON значит JavaScript Object Notation.

Его придумали для того, чтобы упростить обмен данными.

Его предложения легко читаются и составляются как человеком, так и компьютером.

Его легко преобразовать в структуру данных для большинства языков программирования (числа, строки, логические переменные, массивы и так далее).

Многие языки программирования имеют функции и библиотеки для чтения и создания структур JSON.

Правила json

Строка json может содержать объект, и тогда она начинается с < и заканчивается на >. Такой объект очень похож на питоновский словарь: у него есть ключи — строки, которые пишутся в кавычках, а через двоеточие пишется значение, пары ключ-значение разделяются запятыми. Например:

Строка json может содержать массив, и тогда она начинается с [ и заканчивается на ] . Такой массив очень похож на питоновский массив: в нем значения перечисляются через запятую. Например:

Значение в массиве или объекте может быть:

  • Числом (целым или с плавающей точкой)
  • Строкой (в двойных кавычках)
  • Логическим значением (true или false)
  • Другим массивом (заключенным в квадратные скобки)
  • Другим объектом (заключенным в фигурные скобки)
  • Значением null

Чтобы включить в строку специальные символы (например, кавычку), их нужно экранировать с помощью \, например, \» или \r\n . Наглядные правила построения json-строки можно посмотреть на официальном сайте http://www.json.org/, если захочется.

Может показаться, что это вообще-то все и так очень похоже на обычный питон. Но это не так. Во-первых, json — это не исполняемый код, а просто текст. Во-вторых, очень часто запись валидного питоновского словаря или массива не будет являться валидной записью в формате json. Например, это не json, но при этом словарь: <(1, 'a'): u'12345'>. (Попробуйте придумать еще примеры.)

Вот еще пример строки json, посложнее:

Модуль json

В питоне есть стандартный модуль json . В основном из этого модуля используют такие функции:

  • loads — превратить строку в формате JSON в объект питона — словарь или массив. У этой функции один обязательный аргумент — строка.
  • dumps — превратить питоновский словарь или массив в строку JSON. У этой функции один обязательный аргумент — словарь или массив.
  • load — прочитать файл и превратить JSON, который в нем находится, в объект питона. У этой функции два обязательных аргумента — файл и объект питона.
  • dump — превратить питоновский словарь или массив в строку JSON и записать ее в файл. У этой функции два обязательных аргумента — файл и объект питона.

Под словом “файл” в данном случае имеется в виду любой файло-подобный объект — собственно файл, или стандартный ввод-вывод, или даже запросы, которые мы отправляем через urllib.request , то есть такие объекты, к которым можно применить метод .read() .

Пример

Наша json-ка записана в файл (файлы, содержащие данные в формате json традиционно именуют с расширением .json ). Попробуем прочитать этот файл в объекты питона.

ниже — код чтобы в jupyter-тетрадке записать нашу json-ку в файл my_cool_data.json , код на питоне ещё чуть ниже.

Ниже приведён код, способный прочитать наш json-файл в питон.

Результат работы кода:

Пример

Попробуем превратить нашу строку в объекты питона:

Результат работы кода:

Попробуем поработать с этим словарем. например, распечатаем его ключи.

Результат работы кода:

Теперь предположим, что у нас есть питоновский словарь или массив, который мы хотим сохранить в виде строки json

Результат работы кода:

То же самое можно делать с массивами

Результат работы кода:

Убедимся, что не все питоновские правильные объекты хорошо вписываются в json

Результат работы кода:

Важные хитрости метода dump

Записывая json в файл, можно вставить ещё два необязательных параметра, которые могут быть полезны для последующей работы.

Во-первых, это параметр indent , он позволяет сделать так, чтобы данные записывались в файл с человекопонятным форматированием. Тогда файл можно будет открыть текстовым редактором и посмотреть глазами, что там внутри.

Во-вторых, это параметр ensure_ascii , он служит в целом для того же. Дело в том, что если в ваших данных есть не-ascii символы, то модуль json по умолчанию кодирует их специальным образом, используя при этом только символы из ограниченного набора, читающиеся одинаково почти во всех кодировках. Это хорошо при переносе данных из одной программы в другую: ничего не собьётся и не потерятся. Но это плохо для человека: понять, что в таком файле, станет невозможно.

How to dump a dict to a JSON file?

I can’t figure out how to dump the dict to a JSON file as showed below:

Is there a pythonic way to do this?

You may guess that I want to generate a d3 treemap.

Syscall's user avatar

7 Answers 7

This is an easier way to do it.

In the second line of code the file result.json gets created and opened as the variable fp .

In the third line your dict sample gets written into the result.json !

moobi's user avatar

Combine the answer of @mgilson and @gnibbler, I found what I need was this:

It this way, I got a pretty-print json file. The tricks print >> f, j is found from here: http://www.anthonydebarros.com/2012/03/11/generate-json-from-sql-using-python/

Dictionaries preserve insertion order. Note that updating a key does not affect the order. Keys added after deletion are inserted at the end

mgilson's user avatar

Also wanted to add this (Python 3.7)

Update (11-04-2021): So the reason I added this example is because sometimes you can use the print() function to write to files, and this also shows how to use the indentation (unindented stuff is evil!!). However I have recently started learning about threading and some of my research has shown that the print() statement is not always thread-safe. So if you need threading you might want to be careful with this one.

Write Dictionary to file Python (In 5 Ways)

How to write dictionary to file PythonHow to write Dictionary to file Python

In this article, we will be solving a problem statement for how to write dictionary to file python. We will be discussing the steps and python methods required to solve this problem.

Table of Contents

What is Dictionary in Python?

Dictionary is one of the data types present in Python. Python dictionary is an unordered collection of items. It is dynamic and mutable in nature. Each item of a dictionary is a key-value pair.

We can define a dictionary by enclosing a list of key-value pairs in curly brackets < >. The keys present in the dictionary must be unique.

We can save dictionary to file in python in various ways. Below we have discussed some of the methods to write dictionary to file in python.

Also Read :

Method 1- Using json.dumps()

Python has an in-built package named as json to support JSON. The json package dumps() method is used to convert a Python object into a JSON string. To know about json package and method read here.

Steps to write dictionary in file using json.dumps:

  1. import json
  2. define the dictionary that you want to save in the file
  3. Open file in write mode
  4. Write dictionary using json.dumps()
  5. Close file

Python Code

Output:

write dictionary to file output 1

mydict.txt file image given below:

Method 2- Using for loop and items()

The dictionary items() method returns an object which contains the list of key-value tuple pair.

  1. define dictionary
  2. Open file in write mode
  3. Loop on the items of the dictionary which we get from dictionary items() method
  4. Write the key and its corresponding value
  5. close the file

Using this method, you can write each key-value pair on the new line.

Python Code

Output:

write dictionary to file output 2

mydict.txt file image given below:

Method 3- using str() to write dictionary to file Python

In this method, we just convert the dictionary into a string and write that string into the file. To convert a dictionary to a string we use the str() function.

Python Code

Output:

write dictionary to file output 1

mydict.txt file image given below:

Method 4- using keys() method

By using the keys() method of the dictionary we will get all the keys. We will iterate over the keys and write the key and its corresponding value to the file.

Python code:

Output:

write dictionary to file output 2

mydict.txt file image given below:

Method 5- using pickle.dump() to write dictionary to file Python

The Python Pickle module is used for serializing and de-serializing a Python object. The pickle module converts python objects like lists, dictionaries, etc into a character stream. To know about the Python Pickle module click here.

Since the Pickle module stores data in serialized byte sequence, open the file in wb mode i.e write binary mode and use the pickle module’s dump() method to write dictionary into the file.

Python Code

Note!
When we use the pickle module to write to file, the data is in serialized binary format which is not readable. To read the data again from the file we can use pickle.load() which deserialize the file contents.

Conclusion

In this article, we have seen 5 different ways to write dictionary to file python. We can write dictionary to file by using json.dumps, for loop with dictionary items(), str(), keys() and pickle.dump() method.

I am Passionate Computer Engineer. Writing articles about programming problems and concepts allows me to follow my passion for programming and helping others.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *