python: Ошибка при вычислении и сложении

Написал команду "Машина улучшить 1" (улучшение машины), но обрабатывается команда неправильно, мой код:

    elif message.text == 'машина улучшить 1' or message.text == 'Машина улучшить 1': # команда Машина улучшить (ИД)
        if os.path.isfile(f"C://tgplay/{message.chat.id}_avto1.py"):
            file = open(f'C://tgplay/{message.chat.id}_avto1.py', 'r')
            schet = int(file.read())
            file.close
            if schet == int('70'):
                bot.send_message(message.chat.id, 'Ваша машина уже улучшена до максимум!')
                return
            file = open(f'c://tgplay/{message.chat.id}_money.py', 'r+')
            money = int(file.read())
            file.close
            if money < int(11000):
                bot.send_message(message.chat.id, 'У вас недостаточно средств для улучшения!')
                return
            else:
                file = open(f'c://tgplay/{message.chat.id}_avto1.py', 'r+')
                lsid = file.read()
                num = int(lsid)
                file.seek(0)
                file.write(str(num+1))
                file.seek(0)
                file.close
                file = open(f'C://tgplay/{message.chat.id}_money.py', 'r+')
                filemoney = int(file.read())
                file.seek(0)
                file.write(str(filemoney-11000))
                file.seek(0)
                file.close
            # подсчет всего
                file = open(f'c://tgplay/{message.chat.id}_money.py', 'r')
                itogmoney = int(file.read())
                file.close
                file = open(f'c://tgplay/{message.chat.id}_avto1.py', 'r')
                itogmon = int(file.read())
                file.close
                bot.send_message(message.chat.id, f'{message.from_user.first_name}, вы успешно улучшили свою машину!\n    Добавлено: +1 лошадиных сил.\n    Лошадиных сил теперь: ' + str(itogmon) + '!\n? Ваш баланс: ' + str(itogmoney))
        else:
            bot.send_message(message.chat.id, 'У вас нету машины!')

Когда я пишу команду в боте, он пишет неправильный баланс(изначально на балансе было 20000):

Ваш баланс: 90000

Я не знаю откуда он берёт такое число да ещё и прибавляет, когда нужно было наоброт вычитать, прошу помочь мне! В сфере программирования я новичок


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

Автор решения: Эникейщик

Хехе, занимательный случай. В файл и пишется 9000, но поскольку зачем-то применяются r+ и seek(), то в файле ещё остаётся последний 0 от 20000, а '9000'+'0' как раз и получается '90000'.

Решение из комментария: после записи вызвать file.truncate().

PS. Удалил свой предыдущий совет, потому что он в некоторых местах приведет к другим проблемам.

Вообще, работу с файлами тут надо оптимизировать. Не нужно открывать/закрывать файл на каждый чих. Достаточно каждый файл открыть один раз и закрыть когда он больше не нужен. И используйте для работы с файлами конструкцию with open(), тогда файл будет закрыт автоматически.

→ Ссылка