Discord.py发送空白.txt文件问题求助
解决Discord Bot发送空白TXT文件的问题
我来帮你拆解下问题根源,以及给出可行的修复方案:
问题出在哪?
你的两段代码都存在文件操作的逻辑漏洞:
- 第一段代码里,写完文件后直接调用
discord.File(F),此时文件指针停留在文件末尾,discord.File从当前指针位置开始读取,自然读不到任何内容。 - 第二段代码里,你第二次用
w+模式打开文件——这个模式会直接清空原有文件内容,所以打开后的文件本身就是空的,发送出去自然也是空白文件。
正确的修复方案
你有两种靠谱的解决方式:
方式1:写完后重置文件指针
在同一个with块内,写完内容后把文件指针移到开头,再发送文件:
with open("#PATH", "w+") as F: F.write(f"name : {name}\n") F.write(f"xp history : {str(xp_history)}\n") F.write(f"date History : {str(date_history)}\n") F.seek(0) # 将文件指针移回文件开头 await context.send(file=discord.File(F))
方式2:关闭文件后重新只读打开
先完成写入并关闭文件,再用只读模式打开发送,这种方式更稳妥:
with open("#PATH", "w") as F: F.write(f"name : {name}\n") F.write(f"xp history : {str(xp_history)}\n") F.write(f"date History : {str(date_history)}\n") # with块结束后文件自动关闭并保存内容 with open("#PATH", "r") as F: await context.send(file=discord.File(F))
小提示:这里把
w+改成了w(纯写入模式),因为你不需要在写入阶段读取文件,用更精准的模式能避免不必要的意外。
额外检查点
- 确认
#PATH是有效路径,建议用绝对路径避免找不到文件的问题。 - 可以在写入后手动打开文件检查内容,确认变量
name、xp_history、date_history确实有值。
内容的提问来源于stack exchange,提问作者Zejammydodger
相关产品推荐
相关产品推荐

