Cómo convertir 1000 archivos JSON en 1000 archivos CSV usando Python

Esto es mucho más fácil si usa el módulo pandas. Siempre que sus archivos JSON contengan listas de diccionarios (lo que parece ser el caso), esto es muy sencillo. También tiene la ventaja de que no necesita conocer de antemano el conjunto de columnas en los archivos JSON.

import pandas as pd
import os for filename in os.listdir(os.getcwd()):
root, ext = os.path.splitext(filename)
if ext == '.json':
frame = pd.read_json(filename)
frame.to_csv(root + '.csv', index=False)

import pandas as pd
import os for filename in os.listdir(os.getcwd()):
root, ext = os.path.splitext(filename)
if ext == '.json':
frame = pd.read_json(filename)
frame.to_csv(root + '.csv', index=False)

Si desea volcar todo el conjunto de datos en un archivo csv como se menciona en los comentarios, puede hacer lo siguiente.

import pandas as pd
import os

frame = pd.DataFrame ()
para nombre de archivo en os.listdir (os.getcwd ()):
root, ext = os.path.splitext (nombre de archivo)
si ext == ‘.json’:
tmp_frame = pd.read_json (nombre de archivo)
frame = frame.append (tmp_frame, ignore_index = True)

frame.to_csv (‘output.csv’, index = False)

importar csv
importar os

def parse_json (fname):
para l en abierto (fname):
rendimiento eval (l)

if __name__ == ‘__main__’:

para nombre de archivo en os.listdir (os.getcwd ()):
si no nombrearchivo.endswith (‘. json’):
Seguir
        out_filename = filename.split (‘.’) [0]
        json_data = parse_json (nombre de archivo)
        out_file = csv.writer (abierto (out_filename + “.csv”, “wb +”))

        out_file.writerow ([“pk”, “model”, “codename”, “name”, “content_type”])
para el dato en json_data:
        out_file.writerow ([datum [“pk”],
    datum [“modelo”],
    datum [“fields”] [“codename”],
    datum [“campos”] [“nombre”],
    datum [“campos”] [“tipo_contenido”]])
        out_file.close ()

JSON representa una estructura de árbol, mientras que CSV representa una tabla. Definitivamente va a ser complicado.

Necesitará tablas separadas para representar algunos niveles incluso dentro del mismo árbol JSON. También es posible que necesite archivos de unión para representar matrices (especialmente matrices de nodos complejos; las matrices de tipos de datos simples pueden simplemente concatenarse en una cadena usando un delimitador especial y almacenarse en una sola columna).

Le recomiendo que tome uno de sus archivos JSON como muestra e intente crear una representación CSV a mano. Las cosas se volverían más claras de esa manera.

Depende de la estructura del JSON. Probablemente usará json.reads (json_content), que le dará un diccionario, luego usar list () cuando corresponda.