Sto provando a leggere un json e ottenere i suoi valori. Ho una cartella con gli archivi JSON, e ho bisogno di aprire tutti gli archivi e ottenere i valori da essi.Python ValueError: nessun oggetto JSON può essere decodificato
Questo è il codice:
# -*- encoding: utf-8 -*-
from pprint import pprint
import json
import os
def start():
for dirname, dirnames, filenames in os.walk('test'):
for filename in filenames:
json_file = open(os.path.join(dirname, filename)).read()
# json_file = unicode(json_file, 'utf-8')
json_data = json.loads(json_file)
pprint(json_data)
for key, value in json_data.items():
print "KEY : ", key
print "VALUE: ", value
start()
Questo è uno del JSON
{ "test" : "Search User 1",
"url" : "http://127.0.0.1:8000/api/v1/user/1/?format=json",
"status_code" : 200,
"method" : "get"
}
Ma quando l'eseguo, ottengo questo:
ValueError: No JSON object could be decoded
Che diavolo sta sbagliato? Ieri stava funzionando esattamente come è ora, o sono pazzo
ho provato in questo modo:
from pprint import pprint
import json
import os
for dirname, dirnames, filenames in os.walk('test'):
for filename in filenames:
json_file_contents = open(os.path.join(dirname, filename)).read()
try:
json_data = json.loads(json_file_contents)
except ValueError, e:
print e
print "ERROR"
Non posso vedere alcun errore '-'
for filename in filenames:
with open(os.path.join(dirname,filename)) as fd:
json_data = fd.read()
print json_data
In questo modo posso vedere cosa contengono i file json, ma non posso usare ad esempio l'accesso tramite la chiave, come json_data['url']
è necessario rinominare "json_file" a "json_file_contents" o qualcosa di simile. È confusionario.Più importante però: provate: tranne ValueError attorno all'istruzione json.loads e stampate il contenuto reale del file. – deets
È questo il tuo codice attuale? Sto ottenendo un 'IndentationError' sulla riga 'pprint'. – Kevin
cosa è cambiato da ieri? – dm03514