#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()