Imprime datos JSON en un archivo usando Python

Un proyecto para la clase consiste en analizar los datos de Twitter JSON. Estoy obteniendo los datos y configurándolos en el archivo sin muchos problemas, pero todo está en una línea. Esto está bien para la manipulación de datos que estoy tratando de hacer, pero el archivo es ridículamente difícil de leer y no puedo examinarlo muy bien, lo que dificulta mucho la escritura del código para la parte de manipulación de datos.

¿Alguien sabe cómo hacerlo desde Python (es decir, no usar la herramienta de línea de comandos, que no puedo trabajar)? Aquí está mi código hasta ahora:

header, output = client.request(twitterRequest, method="GET", body=None, headers=None, force_auth_header=True) # now write output to a file twitterDataFile = open("twitterData.json", "wb") # magic happens here to make it pretty-printed twitterDataFile.write(output) twitterDataFile.close() 

Nota : Aprecio que las personas me señalen documentos simples y similares, pero, como he dicho, ya he mirado eso y sigo necesitando ayuda. Una respuesta verdaderamente útil será más detallada y explicativa que los ejemplos que se encuentran allí. Gracias

También: Intentando esto en la línea de comandos de Windows:

 more twitterData.json | python -mjson.tool > twitterData-pretty.json 

resultados en esto:

 Invalid control character at: line 1 column 65535 (char 65535) 

Le daría los datos que estoy usando, pero es muy grande y ya ha visto el código que usé para crear el archivo.

 header, output = client.request(twitterRequest, method="GET", body=None, headers=None, force_auth_header=True) # now write output to a file twitterDataFile = open("twitterData.json", "w") # magic happens here to make it pretty-printed twitterDataFile.write(simplejson.dumps(simplejson.loads(output), indent=4, sort_keys=True)) twitterDataFile.close() 

Puedes analizar el JSON y luego mostrarlo de nuevo con sangrías como esta:

 import json mydata = json.loads(output) print json.dumps(mydata, indent=4) 

Consulte http://docs.python.org/library/json.html para obtener más información.

 import json with open("twitterdata.json", "w") as twitter_data_file: json.dump(output, twitter_data_file, indent=4, sort_keys=True) 

No necesita json.dumps() si no desea analizar la cadena más tarde, simplemente use json.dump() . Es más rápido también.

Puedes usar el módulo json de python para imprimir bastante.

 >>> import json >>> print json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4) { "4": 5, "6": 7 } 

Pues en tu caso

 >>> print json.dumps(json_output, indent=4) 

Si ya tiene archivos JSON existentes que desea formatear bastante, puede usar esto:

  with open('twitterdata.json', 'r+') as f: data = json.load(f) f.seek(0) json.dump(data, f, indent=4) f.truncate() 

Podría redirigir un archivo a python y abrirlo con la herramienta y, para leerlo, use más.

El código de ejemplo será,

 cat filename.json | python -m json.tool | more