web-dev-qa-db-fra.com

Lecture de fichier JSON avec Python 3

J'utilise Python 3.5.2 sous Windows 10 x64. Le fichier JSON que je suis en train de lire est this , qui est un fichier JSON tableau contenant 2 tableaux supplémentaires.

J'essaie d'analyser ce fichier JSON à l'aide du module json. Comme décrit dans le docs , le fichier JSON doit être conforme à RFC 7159. J'ai vérifié mon dossier ici et il me dit que tout va bien avec le RFC 7159 _ format, mais en essayant de le lire en utilisant ce simple python code:

with open(absolute_json_file_path, encoding='utf-8-sig') as json_file:
    text = json_file.read()
    json_data = json.load(json_file)
    print(json_data)

Je reçois cette exception:

Traceback (most recent call last):
  File "C:\Program Files (x86)\JetBrains\PyCharm 4.0.5\helpers\pydev\pydevd.py", line 2217, in <module>
    globals = debugger.run(setup['file'], None, None)
  File "C:\Program Files (x86)\JetBrains\PyCharm 4.0.5\helpers\pydev\pydevd.py", line 1643, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\Program Files (x86)\JetBrains\PyCharm 4.0.5\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc) 
  File "C:/Users/Andres Torti/Git-Repos/MCF/Sur3D.App/shapes-json-checker.py", line 14, in <module>
    json_data = json.load(json_file)
  File "C:\Users\Andres Torti\AppData\Local\Programs\Python\Python35-32\lib\json\__init__.py", line 268, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "C:\Users\Andres Torti\AppData\Local\Programs\Python\Python35-32\lib\json\__init__.py", line 319, in loads
    return _default_decoder.decode(s)
  File "C:\Users\Andres Torti\AppData\Local\Programs\Python\Python35-32\lib\json\decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\Andres Torti\AppData\Local\Programs\Python\Python35-32\lib\json\decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Je peux lire parfaitement ce fichier sur Javascript mais je ne peux pas obtenir Python pour l’analyser. Y at-il un problème avec mon fichier ou un problème avec Python analyseur?

14
Andres

Si on se base sur documentation , il apparaît que vous devez changer la troisième ligne en

json_data = json.loads(text)

ou supprimer la ligne

text = json_file.read()

depuis read(), l'index du fichier arrive à la fin du fichier. (Je suppose que vous pouvez également réinitialiser l'index du fichier).

13
Will Molter

Essaye ça

import json

with open('filename.txt', 'r') as f:
    array = json.load(f)

print (array)
33
lcastillov