Запись в файл .json - PullRequest
       7

Запись в файл .json

0 голосов
/ 17 октября 2019

В настоящее время я пытаюсь записать 2 фрагмента введенного пользователем кода в файл .json без очистки существующих данных. Я считаю, что это проблема с logins.append, так как он говорит, что нет такой вещи. Что я должен использовать?

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

def i():
    path_to_json = "./logins.json"
    with open("logins.json", "r") as content:
        logins = json.load(content)


    with open('logins.json', 'a') as outfile:
        username = str(input('New Username: '))
        password = str(input('New Password: '))
        logins.append({username:password})

Я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    i()
  File "N:\NEA Computing\NEA code.py", line 188, in i
    logins.append({username: password})
AttributeError: 'dict' object has no attribute 'append'

Я ожидаю, что он добавит данные в файл .json без удаления других данных, однако я получаю сообщение об ошибке, и ничего не происходитзаписывается в файл .json.

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Возможно, это неправильное понимание вопроса, но, насколько я понимаю, происходит то, что вы используете json.load, который, похоже, загружает литерал объекта , как {key1: value1, key2: value2,...}, ине литерал массива , как [value1, value2, ...]. Python преобразует первый в python dict, а в словаре нет функции добавления, есть только массив / список. Вы получаете свою ошибку и выполнение останавливается. Когда у вас есть содержимое файла logins.json в качестве объекта {...}, оно не работает для меня, а как массив / список [...] работает

0 голосов
/ 17 октября 2019

Попробуйте открыть файл с параметром 'w'

def i():
        path_to_json = "./logins.json"
        with open("logins.json", "w") as content:
            logins = json.load(content)


        with open('logins.json', 'a') as outfile:
            username = str(input('New Username: '))
            password = str(input('New Password: '))
            logins.append({username:password})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...