python - 试图在 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 是如何知道将它存储在哪里的?似乎没有任何关于文件应该存储在哪里的参数。它只是创建文件。
如果以前有人问过这个问题,请将我链接到它,但我真的找不到能帮助我解决我在这里遇到的这个问题的问题。谢谢!
解决方案
像这样的东西?
@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')
推荐阅读
- c++ - 基于unique_ptr参数指针类型的重载函数
- java - WebExpressionVoter 不支持 ROLE_ANONYMOUS
- javascript - Javascript - 音频元素不在 iOS 上播放
- rust - 使用内联汇编在 Rust 中读取 ebx 寄存器的值(“rbx 由 LLVM 内部使用,不能用作内联 asm 的操作数”)
- node.js - 反应原生'无法在项目中找到博览会
- reactjs - 带有 react-beautiful-dnd 的 React Bootstrap 下拉菜单
- event-handling - 逻辑编程中的事件驱动编程范式
- docker - Docker 容器退出状态
- xamarin.forms - 如何在自动化脚本中验证 Firebase 分析事件?
- javascript - 测试文件时遇到错误