Le format json est tout particulièrement adapté à une utilisation conjointe avec Python. Ses spécificités sont :

  • « propre »
  • léger
  • multi-plateforme
  • flexible
  • conserve le type des données

Lecture des fichiers json avec Python

Pas de spécificité particulière pour lire un json en comparaison aux autres formats de fichier, revoir donc l‘article concernant la lecture de fichier avec Python.

Néanmoins, le module json comporte des fonctions et méthode très pratique, nous les verrons dans la suite de l’article.

Ecrire dans des fichiers json avec Python.

Avant tout, pour travailler avec des json, il convient d’importer le module json

import json

Ecrire avec la méthode .dump()

L’accès aux fichiers est identique comparé aux méthodes d’écriture pour les autre format, nous privilégierons donc l’instruction with… as…

Une fois « le lien établi » pour ecrire dans le fichier json, on peut utiliser la méthode .dump()

La syntaxe de la méthode .dump() est un peu inhabituel :

  • l’objet de la méthode est la module json lui même : json.dump()
  • en premier argument, la méthode attend les données à écrire dans le fichier : json.dump(« Hello », )
  • en second argument, la méthode attend le chemin vers le json à écrire : json.dump(« Hello », data)

Concrétement :

import os
import json

path = os.getcwd()
file = "fichier.json"

new_path = os.path.join(path, file)

with open(new_path, "w") as data :
	json.dump("Hello", data)

En troisième argument, .dump() supporte la spécification de l’indentation :

import os
import json

path = os.getcwd()
file = "fichier.json"

new_path = os.path.join(path, file)

with open(new_path, "w") as data :
	json.dump(list(range(10)), data, indent=4)

Lire avec la méthode .load()

Même si il est possible de lire des json de manière traditionnel, il est tout de même plus aisé et efficace de la faire grace aux fonctions et méthodes du module json.

Pour lire le contenu d’un json tout en conservant le type de données stockées, on utilise la methode .load() qui reprend la syntaxe de la méthode .dump() :

import os
import json

path = os.getcwd()
file = "fichier.json"

new_path = os.path.join(path, file)

with open(new_path, "r") as data :
	liste = json.load(data)
	print(liste)

Gérer le curseur de lecture de la méthode .read()

La méthode .read() utilise un curseur pour lire le contenu d’un fichier. Tant qu’il n’est pas réinitialisé, ce curseur reste au même endroit si bien que si on utilise de nouveau la méthode .read() plus tard dans le script, le résultat de sera du contenu vide (puisque le curseur n’aura plus rien à lire étant à la fin du fichier).

Exemple :

import os

path = os.getcwd()
file = "fichier.txt"

new_path = os.path.join(path, file)

data = open(new_path, "r")
print(data.read())
print("Ok donc la je fais un aut' truc qu'a l'air vachement compliqué")
liste = data.read()
print(liste)
print("Fusk, elle est ou ma seconde liste ?")
data.close()

>>> Salut, je suis le contenu du super fichier texte.
>>> Ok donc la je fais un aut' truc qu'a l'air vachement compliqué
>>> 
>>> Fusk, elle est ou ma seconde liste ?

Pour éviter cela après un .read() il faut réinitialiser le curseur avec la méthode .seek() :

import os

path = os.getcwd()
file = "fichier.txt"

new_path = os.path.join(path, file)

data = open(new_path, "r")
print(data.read())
data.seek(0)
print("Ok donc la je fais un aut' truc qu'a l'air vachement compliqué")
liste = data.read()
print(liste)
print("Fusk, elle est ou ma seconde liste ?")
data.close()

>>> Salut, je suis le contenu du super fichier texte.
>>> Ok donc la je fais un aut' truc qu'a l'air vachement compliqué
>>> Salut, je suis le contenu du super fichier texte.
>>> Fusk, elle est ou ma seconde liste ?

0 commentaire

Laisser un commentaire