FileExistsError: [Errno 17] File exists: 'C://tgplay/123_business.py'

Я сделал функцию покупки игрового бизнеса. Код:

@bot.message_handler(content_types=['text'])
def get_text_messages(message):
    if message.text == 'Бизнес купить 1':
        # проверка денег(баланса)
        File = open('c://tgplay/{0}_money.py'.format(message.chat.id), 'r')
        isset_money = int(File.read())
        File.close


        if not (str(message.chat.id)+'_business.py') in 'C://tgplay': # если файл не существует:
            if isset_money >= int(5000):
                File = open('C://tgplay/{0}_business.py'.format(message.chat.id), 'x+')
                File.write('BALANCE = 1')
                File.close
                bot.send_message(message.chat.id, 'Вы успешно купили бизнес "Продажа самоделок"!')
                bot.send_message(123, 'Игрок ' + str(message.chat.id) + ' купил бизнес.')
            elif isset_money < int(5000): # если в файле money недостаточно денег:
                bot.send_message(message.chat.id, 'Недостаточно средств!')
        else: # если файл business уже существует:
            bot.send_message(message.chat.id, 'Ошибка. У вас уже есть бизнес!')

Но выдаёт ошибку при тестировании команды, т.е. он не видит else и всё равно пытается создать файл business.

Где ошибка в моём коде?

UPD: да, я знаю что когда пользователь покупает бизнес, у него не вычитаются деньги


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

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

В данной строке кода:

if not (str(message.chat.id)+'_business.py') in 'C://tgplay'

вы делаете проверку на отсутствие подстроки str(message.chat.id)+'_business.py' в строке 'C://tgplay'. Очевидно это условие будет выполняться всегда для любого значения message.chat.id.

Если вы хотите проверить существует ли соответствующий файл, то это можно сделать так:

import os.path

if os.path.isfile(f"C://tgplay/{message.chat.id}_business.py"):
    ...

чтобы проверить, что файл не существует:

if not os.path.isfile(f"C://tgplay/{message.chat.id}_business.py"):
    ...

→ Ссылка