Задать вопрос
@Derill23

Как добавить значение в файл json через python?

Мне нужно сохранять данные пользователей примерно вот так:
{
  "1": {
    "name":  "Anna",
    "lakes": 12
  },
  "2": {
    "name":  "Derill",
    "lakes": 23
  }
}

Мне кажется я в json что-то не так понял? Но у меня не получается добавить нового пользователя через питон. Каким кодом можно добавить этого нового пользователя если его нету в json?
  • Вопрос задан
  • 1078 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Scream034
Новичок в разработке
Вот, но это АЗЫ для твой проги
from json import load, dump

class Users:
    """Общий класс для работы с пользователями в формате JSON"""
    
    def __init__(self, filename='users.json'):
        self.filename = filename
        self.load()

    def load(self):
        """Загрузить файл с пользователями"""
        
        try:
            with open(self.filename) as fp:
                self.users = load(fp)
        except FileNotFoundError:
            self.users = {}

    def save(self):
        """Сохраняет файл с пользователями"""
        
        with open(self.filename, 'w') as fp:
            dump(self.users, fp)

    def add_user(self, name, lakes):
        """Добавляет пользователя"""
        
        user_id = str(len(self.users) + 1)
        self.users[user_id] = {'name': name, 'lakes': lakes} # Здесь можно добавить поля
        self.save()

    def remove_user(self, user_id):
        """Удаляет пользователя"""
        
        if user_id in self.users:
            del self.users[user_id] 
            self.save()

    def get_users(self):
        """Получить пользователей"""
        
        return self.users

    def get_user(self, user_id):
        """Получить пользователя под номером..."""
        
        return self.users.get(user_id, None)
    
# Иниц-я
users = Users()

print(users.users)

# добавлять пользователя
users.add_user("Poll", 124)

# Сохранить файл
users.save()
Ответ написан
Комментировать
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Простыми словами:
  • Загружаете JSON, получаете dict (словарь)
  • Вносите в словарь необходимые изменения, в вашем случае my_dict.update({number:{…: …}})
  • Сохраняете словарь в виде JSON.


Загружаете через json.load или json.loads, обратно преобразуете json.dump или json.dumps
Ответ написан
@Bright144
import json

class User:
    def __init__(self, f_name: str) -> None:
        self.f_name = f_name
        with open(self.f_name) as f:
            self.user_list = json.load(f)
        self.users = [i['name'] for i in self.user_list.values()]
        self.last_id = int(list(self.user_list.keys())[-1])

    def add_users(self, name: str, lakes: int) -> None:
        if name not in self.users:
            self.users.append(name)
            self.last_id += 1
            self.user_list[str(self.last_id)] = {'name': name, 'lakes': lakes}
            with open(self.f_name, 'w') as f:
                json.dump(self.user_list, f)
        else:
            print(f'Пользователь с именем {name} уже существует')


users = User('users.json')
users.add_users('Derill', 23)
users.add_users('David', 21)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы