Сбой Python / Discord при записи в файлы

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

В следующем коде файлы создаются и закрываются должным образом без сообщений об ошибках, но когда он пытается выполнить запись в файл, ничего не происходит. Нет сообщений об ошибках и в файл не записано 0:

 if message.content == "MMO start":
    dir = r'C:\Users\UserDesktopMMOProfiles'
    MessageAuthor = str(message.author)
    newpath = os.path.join(dir,MessageAuthor)
    doesExist = os.path.exists(newpath)
    if doesExist == False:
        await message.channel.send("Creating profile")
        os.makedirs(newpath,1)
        newpath = os.path.join(newpath,"Level.txt")
        open(newpath,"x")
        newpath.close()
        open(newpath,"w")
        newpath.write("0")
        newpath.close()
        
    if doesExist == True:
        await message.channel.send("You already have a profile")
  

Любая помощь приветствуется, спасибо.

Комментарии:

1. Попробуйте поместить print(1) операторы после каждого if оператора, чтобы убедиться, что он действительно вызывает код

2. Почему бы вам просто не использовать file = open("Level.txt") ? и вам не обязательно делать if doesExist == False или ==True , вы можете сделать if not doesExist или if doesExist

3. Что такое newpath.close ? Вы пытаетесь «закрыть» строку, это вызовет ошибку. Вам необходимо объявить обработчик файла. f = open(newpath) а затем закройте его с помощью f.close()

4. Если вы не получили сообщение об ошибке, ваша программа даже не входит в первый if блок.

5. один аккуратный совет: вы можете заменить «if boolean == True» просто на «if variable», а «if boolean == False» на «if not variable». Когда у вас есть оператор if логического выражения, он выполняется тогда и только тогда, когда это логическое значение равно true.

Ответ №1:

 newpath = os.path.join(newpath,"Level.txt")
type(newpath)
  

str

Вы пытаетесь выполнить запись в строку, а не в обработчик файла

выполнить

     f = open(newpath,"w")
    f.write("0")
    f.close()