2017-02-19 1 views
1

J'essaye de charger un très grand fichier JSON en Python. J'ai essayé:Chargement d'un fichier JSON extrêmement volumineux sans connaître le schéma?

import json 
data = open('file.json').read() 
loaded = json.loads(data) 

mais cela me donne une erreur SIGKILL.

J'ai essayé:

import pandas as pd 
df = pd.read_json('file.json') 

et je reçois un hors-mémoire erreur.

Je voudrais essayer d'utiliser ijson pour diffuser mes données et seulement tirer un sous-ensemble à la fois. Cependant, vous devez connaître le schéma du fichier JSON afin de connaître les événements à rechercher. Je ne connais pas vraiment le schéma de mon fichier JSON. Donc, j'ai deux questions:

  1. est-il un moyen de charger ou diffuser un grand fichier JSON en Python sans connaître le schéma? Ou un moyen de convertir un fichier JSON dans un autre format (ou dans un serveur postgresql, par exemple)?

  2. Existe-t-il un outil pour cracher le schéma de mon fichier JSON?

MISE À JOUR:

occasion head file.json pour avoir une idée de ce que mon fichier JSON ressemble. De là, c'est un peu plus facile.

+0

pouvez-vous poster un échantillon de votre fichier json? –

Répondre

-1

Vous pouvez lire en morceaux, quelque chose comme ça

f=open("file.json") 
while True: 
    data = f.read(1024) 
    if not data: 
     break 
    yield data 

ligne par option de ligne data = [] avec open ('fichier') comme f: pour la ligne à f: data.append (json.loads (ligne))

Regardez aussi https://www.dataquest.io/blog/python-json-tutorial/

Rechercher plus de réponses avec JSOnline

+0

Cette méthode ne fonctionne pas; quand j'essaye de charger un morceau du fichier json en utilisant 'json.loads' ou' pandas.read_json', j'obtiens des erreurs à propos de ce soit n'étant pas un objet json, ou dans le cas de pandas, c'est un 'ValueError: Trailing data' – user1566200

+0

S'il vous plaît essayer ceci pour jsonline dans f: rendement json.loads (jsonline) –

+0

Je reçois 'rendement à l'extérieur de la fonction' – user1566200