добавление различных словарей json в файл json с помощью python

#python #json

#питон #json

Вопрос:

мы создаем файл JSON и вставляем в него разные словари, но результирующий файл выдает ошибку bcoz из-за пропущенного места открытия и закрытия скобок вместо»,».

 for repoName in tqdm(repoList, total=len(repoList), desc="extracting PR details"):  consolidated_JSON = {}  end_cursor, has_next_page = None, True  flag =0  repoPR={}  prDict={}  while(has_next_page):  data = getPrJSON(repoName, end_cursor)    for pr in data["nodes"]:   repoPrDetails ={  "PR_number": pr["number"],  "title": pr["title"],  "id": pr["id"],  } ` consolidated_JSON[f"PR{pr['number']}"] = repoPrDetails  prDict[f"PR{pr['number']}"] = prDetails  repoPR[repoName] = consolidated_JSON  if flag == 1:  with open("repoPrDetails.json", mode="a") as file:  json.dump(`enter code here`repoPR, file, default=str)  

файл создается следующим образом:

 {  "repo1": {  "PR301": {  "PR_number": 301,  "title": "Update configuration.json",  "id": "MDExOlB1bGxSZXF1ZXN0NDQ1MTM1"  },  "PR302": {  "PR_number": 302,  "title": "refactor",  "id": "MDExOlB1bGxSZXF1ZXN0NDQ1MTM2"  },  "PR303": {  "PR_number": 303,  "title": "Adding us20 az-preprod saas tenants",  "id": "MDExOlB1bGxSZXF1ZXN0NDQ1MTM3"  },  "PR304": {  "PR_number": 304,  "title": "logic corrected",  "id": "MDExOlB1bGxSZXF1ZXN0NDQ1MTM4"  }  } } {  "repo2": {  "PR301": {  "PR_number": 301,  "title": "Update configuration.json",  "id": "MDExOlB1bGxSZXF1ZXN0NDQ1MTM1"  },  "PR302": {  "PR_number": 302,  "title": "refactor",  "id": "MDExOlB1bGxSZXF1ZXN0NDQ1MTM2"  },  "PR303": {  "PR_number": 303,  "title": "Adding us20 az-preprod saas tenants",  "id": "MDExOlB1bGxSZXF1ZXN0NDQ1MTM3"  },  "PR304": {  "PR_number": 304,  "title": "logic corrected",  "id": "MDExOlB1bGxSZXF1ZXN0NDQ1MTM4"  }  } } {  "repo3": {  "PR301": {  "PR_number": 301,  "title": "Update configuration.json",  "id": "MDExOlB1bGxSZXF1ZXN0NDQ1MTM1"  },  "PR302": {  "PR_number": 302,  "title": "refactor",  "id": "MDExOlB1bGxSZXF1ZXN0NDQ1MTM2"  },  "PR303": {  "PR_number": 303,  "title": "Adding us20 az-preprod saas tenants",  "id": "MDExOlB1bGxSZXF1ZXN0NDQ1MTM3"  },  "PR304": {  "PR_number": 304,  "title": "logic corrected",  "id": "MDExOlB1bGxSZXF1ZXN0NDQ1MTM4"  }  } }  

теперь файл JSON, который мы создали, выдает ошибку bcoz «} {» вместо», » любезно предоставьте способ добавления файла JSON с разными словарями, поскольку мы не можем хранить данные в одном словаре, так как данные огромны.

Комментарии:

1. Отступ в вашем коде выглядит немного странно: не могли бы вы это исправить, пожалуйста?

Ответ №1:

 with open("repoPrDetails.json", mode="a") as file:  json.dump(repoPR, file, default=str)  

здесь режим-это «проблема».

Предположим, что существующие данные в файле повторяются.json-это {«1»:{«a»:»b»}}. Теперь, когда вы снова запускаете этот код (предположим, что здесь должны быть записаны данные {«2»:{«a»:»b»}}), код добавляет эти данные после исходящих данных. Таким образом, новые данные в файле : —

{«1»:{«a»:»b»}}{«2»:{«a»:»b»}}.

Вы открываете файл каждый раз в цикле.

Теперь, как это исправить —

 existingData = {} try:  f = open("repoPrDetails.json")  existingData = json.load(f) except:  pass  with open("repoPrDetails.json", mode="w") as file:  repoPR.update(existingData)  json.dump(repoPR, file, default=str)  

Если вы не хотите загружать все данные в словарь, то единственный вариант-добавить строку в файл, удалив последние скобки, перейдя в последнюю позицию