Не правильная запись в JSON
При попытке записи в пустой JSON файл новых данных:
{
}
их расположение в файле оказывается не верным:
{
}{"qwer": 5148343852015304274}
Так и не смог заставить код записывать внутрь фигурных скобок. На данных момент это последняя версия:
name, password = str(input("имя: ")), str(input("пароль: "))
with open('users.json', 'r+', encoding='utf-8') as file:
file.seek(0)
data = json.load(file)
data[name] = hash(password)
json.dump(data, file)
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
После чтения из файла позиция "курсора" находится в конце файла, получается при записи текст добавляется в конец.
Можно, конечно, курсор переместить на начало (делать file.seek(0) после чтения), но проще разделить чтение и запись - читать в режиме "r", записывать в режиме "w". Так текст будет полностью заменяться, не будут оставаться "хвосты" со старым содержимым, если записанный текст окажется короче того что было в файле.
with open('users.json', 'r', encoding='utf-8') as file:
data = json.load(file)
name, password = input("имя: "), input("пароль: ")
with open('users.json', 'w', encoding='utf-8') as file:
data[name] = hash(password)
json.dump(data, file)