Python JSON обновить и удалить значения объекта - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь внести изменения в файл json, фактически переписывая значения объектов. У меня проблемы с этим, я нахожу нужный объект, но я не могу изменить объекты в txt файле.

with open('customersFile.txt') as json_file:
    data = json.load(json_file)

for p in data['customers']:
    if p['myPassword'] == userPassword:
        p['name'] = input('Enter new name: \n')
        p['phone'] = input('Enter new phone: \n')
        p['id'] = input('Enter new id: \n')

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

вы должны использовать json .dump:

with open('customersFile.txt', 'r+') as json_file:
    data = json.load(json_file)

    for p in data['customers']:
        if p['myPassword'] == userPassword:
            p['name'] = input('Enter new name: \n')
            p['phone'] = input('Enter new phone: \n')
            p['id'] = input('Enter new id: \n')
        
    # reset file position
    json_file.seek(0)
    json.dump(data, json_file, indent=4)
0 голосов
/ 09 июля 2020

Ваш код изменяет только объект data, а не файл на диске. Впоследствии вам необходимо записать измененный объект JSON обратно на диск:

with open('62809614.json') as json_file:
    data = json.load(json_file)
    for p in data['customers']:
        if p['myPassword'] == userPassword:
            p['name'] = input('Enter new name: \n')
            p['phone'] = input('Enter new phone: \n')
            p['id'] = input('Enter new id: \n')

with open('62809614_modified.json', 'w') as json_file_modified:
    json.dump(data, json_file_modified)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...