Как написать файл .json с несколькими словарями в цикле python - PullRequest
0 голосов
/ 26 мая 2018
 while True:
        my_dict={}

         b = box.tolist() 
         t = np.array(timestamp).tolist() 
         my_dict["coordinates"] = b
         my_dict["timestamp"]= t
         all_dict.append(my_dict)

  for my_dict in all_dict:    
        with open("co.json", 'a') as fp: 
        json.dump(my_dict,fp)

Вывод должен быть в формате json, но он не такой { {},{},{} }, он имеет только дамп как {}{}{} без разделителя запятых и без внешнего {}

Ответы [ 2 ]

0 голосов
/ 26 мая 2018
with open("coordinates.json", 'w') as fp: 
    fp.write('{')
    for my_dict in all_dict:
        if (my_dict!=all_dict[-1]):
            #fp.write('"key":'+json.dumps(my_dict)+',\n')
        else:
            fp.write('"key":'+json.dumps(my_dict)) 
    fp.write('}')  
0 голосов
/ 26 мая 2018

это потому, что вы выгружаете каждый подкаталог, как если бы он был отдельными словарями.Поэтому он не записывает ни фигурные скобки, ни запятые.

Вместо этого не зацикливайтесь на поддиктах, а просто выводите весь список диктов (добавление параметра indent позволяет "довольно распечатать"dump при необходимости):

with open("co.json", 'w') as fp:  
    json.dump(all_dict,fp,indent=2)

(вам сейчас не нужен режим добавления, просто откройте для записи / усечения) Обратите внимание, что вы не получите «dict» из dicts, кроме список диктов в результате: например, [ {a:b}, {c:d} ], что также верно для json.

...