Ho un grande for loop
in cui creo oggetti json e mi piacerebbe essere in grado di scrivere in streaming l'oggetto in ogni iterazione su un file. Mi piacerebbe poter usare il file più tardi in un modo simile (leggi gli oggetti uno alla volta). I miei oggetti JSON contengono newline e non posso semplicemente scaricare ogni oggetto come una linea in un file. Come posso ottenere questo?Python, scrivere oggetti json/dizionario su un file in modo iterativo (uno alla volta)
Per renderlo più concreto, considerare quanto segue:
for _id in collection:
dict_obj = build_dict(_id) # build a dictionary object
with open('file.json', 'a') as f:
stream_dump(dict_obj, f)
stream_dump
è la funzione che voglio.
Nota che non voglio creare un elenco di grandi dimensioni e scaricare l'intero elenco utilizzando qualcosa come json.dump(obj, file)
. Voglio essere in grado di aggiungere l'oggetto al file in ogni iterazione.
Grazie.
Se non capisco la tua domanda in modo errato, sembra possibile scrivere una linea di separazione che i tuoi dati non hanno "-----" in ogni iterazione dopo aver scritto l'oggetto e durante la lettura crea un nuovo oggetto quando vedi quel separatore . – alpert
Ah, capisco. Questo sicuramente funziona. Ho pensato che potrebbero esserci altre soluzioni di elaborazione del flusso. – CentAu