#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)
Если вы не хотите загружать все данные в словарь, то единственный вариант-добавить строку в файл, удалив последние скобки, перейдя в последнюю позицию