Проблема с eval()

Вот код

    users = []
    with open(f'{tdir(__file__)}/data.txt'.replace('\\', '/').replace('b.py/', ''), "r", encoding = 'utf-8') as file:
        lines = [x.replace('\n', '') for x in file.readlines()]
        file.close()
    for line in lines:
        print(line)
        line = eval('{' + line + '}')
        if line != '{}':
            users.append(User(speed = line["speed"], gun = line["gun"], money = line["money"], mode = line["mode"], id = line["id"]))
    return users

Проблема с eval(). Выдаёт такую ошибку:

line = eval('{' + line + '}')
  File "<string>", line 1, in <module>
NameError: name 'start' is not defined

Что не так?


Ответы (1 шт):

Автор решения: CrazyElf

Поскольку start у вас там без кавычек "mode" : start, питон ищет переменную с таким названием, чтобы подставить её значение, и не находит. Возьмите start в кавычки "mode" : "start", либо опишите ранее в коде переменную start = "чего-нибудь", если там какое-то другое значение должно быть.

→ Ссылка