Python Telegram Bot如何不存储到服务器直接发送response.content的PDF文件
实现方案
你可以借助Python内置的io.BytesIO类,将网络请求返回的二进制PDF数据直接封装成类文件对象,不需要写入本地磁盘,直接传给Telegram Bot的发送文件接口即可。
优化后的实现代码如下:
import io import requests # 请求获取PDF二进制数据 response = requests.get(url) # 将二进制内容封装为内存中的类文件对象 pdf_file = io.BytesIO(response.content) # 可选:给文件设置名称,用户收到的PDF会显示你指定的文件名,避免默认无后缀的异常显示 pdf_file.name = "自定义文件名称.pdf" # 直接传入内存文件对象发送,不需要读写本地磁盘 update.message.reply_document(document=pdf_file)
相关说明:
BytesIO对象本身实现了Python的文件读写协议,完全可以替代本地打开的文件对象传入reply_document方法- 不需要手动关闭
BytesIO对象,Python垃圾回收机制会自动处理对应的内存释放 - 如果不需要自定义文件名,可以省略给
pdf_file.name赋值的步骤,Telegram端会默认显示file.pdf作为文件名
内容的提问来源于stack exchange,提问作者Bhawyen Mehta
相关产品推荐
相关产品推荐

