Ne peut pas lire de fichier JSON en Python

J'ai essayé de lire des données à partir d'un fichier JSON, mais j'ai rencontré erreur bizarre et n'ont aucune idée de ce que cela signifie. J'ai essayé de googler, mais ça ne l'aide pas. J'ai eu l'erreur suivante:

Traceback (most recent call last):
  File "items_uploader.py", line 40, in <module>
    main()
  File "items_uploader.py", line 16, in main
    LoadItemsData(settings['items_filename'])
  File "items_uploader.py", line 36, in LoadItemsData
    data = json.load(json_data)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 278, in load
    **kw)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting , delimiter: line 8 column 397 (char 3064)

Le code lui-même est assez simple:

import socket
import MySQLdb
from ConfigParser import SafeConfigParser
import json
from pprint import pprint

def main():
    settings = GetSettings()
    LoadItemsData(settings['items_filename'])
    return

def GetSettings():
    settings = {}
    parser = SafeConfigParser()
    parser.read('settings.yaml')
    settings['items_filename'] =  parser.get('files', 'items_filename')
    return settings

def LoadItemsData(filename):
    json_data=open(filename)
    data = json.load(json_data)
    return data

if __name__ == '__main__':
    main()

Toute aide serait appréciée!

  • Êtes-vous sûr que vos données JSON est-elle valable? L'erreur semble être une erreur de syntaxe dans vos données d'entrée.
  • Veuillez inclure la partie du fichier autour de l'endroit où le JSON erreur se produit (ligne 8 colonne 397, char 3064).
  • Fondamentalement aucun code python que vous avez posté (autres que le traceback) est pertinente ici, car la seule chose qui importe est le contenu de settings['items_filename'] fichier.
  • Pourriez-vous nous montrer vos données JSON?
  • Complètement indépendants, mais à l'aide de CamelCase dans les noms de fonction en Python, c'est mal vu, ce style est réservé pour des cours. python.org/dev/peps/pep-0008/#naming-conventions
  • Sergey, merci de me le faire savoir. Je vais changer le style dans le code

InformationsquelleAutor pisarzp | 2012-12-03