Objet JSON doit être str, pas 'octets'

À l'aide de Python 3.5.1, j'ai tiré dans un fichier texte où chaque ligne est en JSON forme:
{"a":"windows", "b":"escalier"...}

import json
path = 'folder/data.txt'
records=[json.loads(line) for line in open(path,'rb')]

Mais j'ai reçu le message d'erreur:

the JSON object must be str, not 'bytes'

Je n'ai pas de problème d'impression de la première ligne du fichier, donc je suis rassuré que le chemin d'accès du fichier est correct.

  • Peut-être se débarrasser de la " b " dans votre open appel? docs.python.org/2/library/functions.html#open dit qui va charger le fichier au format binaire, qui peut être pourquoi il n'est pas être pris comme une chaîne de caractères.
  • Si vous prenez juste une ligne du fichier, vous pouvez le charger en json? Comme json.loads(file.readlines()[0])
  • votre suggestion résout mon problème. J'ai aussi appris que le passage encoding='utf-8' directement dans le open appel fonctionne ainsi. Je vous remercie pour votre commentaire.
InformationsquelleAutor Greg | 2016-02-04