2017-02-06 2 views
0

Я пытаюсь добавить объекты JSON к существующему объекту JSON в текстовом файле. Мой первый набор данных выглядит так.Python - Добавление объекта JSON к существующему объекту JSON

data = [ 
     { 
      "username": "Mike", 
      "code": "12345", 
      "city": "NYC" 
     } 
     ] 

Тогда мне нужно добавить еще один набор объектов JSON в существующий файл, чтобы выглядеть следующим образом:

data = [ 
     { 
      "username": "Mike", 
      "code": "12345", 
      "city": "NYC" 
     }, 
     { 
      "username": "Kelly", 
      "code": "56789", 
      "city": "NYC" 
     } 
     ] 

Когда я пытаюсь запустить:

with open('data2.txt', 'a') as outfile: 
    json.dump(data, outfile) 

мои данные не правильный формат JSON. Не могли бы вы посоветовать, как правильно добавить в текстовый файл?

+0

Вы не можете просто добавить в текстовый файл и ожидать, что он каким-то образом знает, как быть в формате json. Вы должны прочитать файл, преобразовать в json, затем добавить свои значения и переписать его – Falmarri

ответ

0

Сначала прочитайте данные из файла.

with open('data2.txt') as data_file:  
    old_data = json.load(data_file) 

Затем добавить данные к старым данным

data = old_data + data 

Затем переписать весь файл.

with open('data2.txt', 'w') as outfile: 
    json.dump(data, outfile) 
0

Это, вероятно, не самый Pythonic способ обработать запрос, но я надеюсь, что это поможет с некоторыми вопросами вы можете столкнуться. Я завернул загрузку и сброс в браслетов, кроме того, чтобы сделать код более надежным. Самым большим сюрпризом для себя было то, что вы не используете 'a', когда открываете файл как выходной файл, но вместо 'w'. Однако это имеет смысл, если учесть, что вы добавили уже строку «data.append (data1)», поэтому нет необходимости добавлять два раза при загрузке файла.

data = [{"username": "Mike", "code": "12345", "city": "NYC"}] 
data1 = {"username": "Kelly", "code": "56789", "city": "NYC"} 
data2 = {"username": "Bob", "code": "12222", "city": "NYC"} 

try: 
    with open('append.txt', 'r') as fin: 
     data = json.load(fin) 
except FileNotFoundError as exc: 
    pass 

try: 
    if data: 
     data.append(data1) 
     with open('append.txt', 'w') as fout: 
      json.dump(data, fout) 
except UnboundLocalError as exc: 
    with open('append.txt', 'w') as fout: 
     json.dump(data, fout) 
Смежные вопросы