首页 > 解决方案 > 试图在 Discord.py 中写入一个新文件,但没有任何反应

问题描述

我对 Python 和 Discord.py 还很陌生,所以如果这个问题的答案对我来说应该更明显,我深表歉意。

我希望能够使用我的机器人从服务器保存数据并在必要时查看数据,所以我决定最有效的方法是让我的机器人为每台服务器编写文本文件以包含它们的所有数据。

下面是我的代码。

import discord
from discord.ext, import commands
import os

@bot.event
async def on_server_join(server):
  print('Joined ' + server.name)
  for root, dirs, files in os.walk('Physix'): # Creating the file for the server if it doesn't already exist
    if server.name + '.txt' in files:
      print('File for ' + server.name + ' already exists')
    else:
      newFile = open(server.name + '.txt', 'w+')
      newFile.write(server.name + '\n')
      newFile.close()
      print('File for ' + server.name + ' created')

我的问题是,当我运行我的代码并让机器人重新加入服务器时,没有创建任何文件。除了在文件搜索和写入开始之前运行的“Joined [serverName]”之外,也没有打印任何内容。编译器不显示任何错误。

我查找了查看文件是否已存在的最佳方法是使用 os.walk,这就是我在这里使用的方法。有没有更有效的方法来保存数据,同时能够访问我不知道的数据?

我的另一个问题是,当你创建一个新文件时,Python 是如何知道将它存储在哪里的?似乎没有任何关于文件应该存储在哪里的参数。它只是创建文件。

如果以前有人问过这个问题,请将我链接到它,但我真的找不到能帮助我解决我在这里遇到的这个问题的问题。谢谢!

标签: pythonfilediscorddiscord.pyos.walk

解决方案


像这样的东西?

@client.event
async def on_server_join(server):
    with open('info.txt','w') as file:
        file.write("Server name: " + server.name)
        print('File for ' + server.name + ' created')

推荐阅读