Discord 使用 BytesIO 发送空白文本文件

Discord sending blank text file with BytesIO

我试图用 discord.py 发送一个文本文件,但是当我发送文件时,它似乎是空的。

示例片段:

bytes = BytesIO()
test = b'sadfasdfsa'
bytes.write(test)
print(bytes)
await ctx.send(file=File(bytes, 'test.txt'))

这会导致发送一个空的 test.txt 文件。为什么不发送内容?

调用 BytesIO.write() 后,BytesIO 指针将设置为文件末尾。要从内存中读取完整文件,您需要首先使用 seek() 将指针设置为文件的开头。所以在发送文件之前你会调用:

bytes_.seek(0)

另一方面,如果您将变量命名为 bytes,您将覆盖 built-in Python type,这就是我在上面的示例中重命名它的原因。