You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python向Telegram Bot上传PDF文件失败,如何定位代码错误?

代码存在的5个核心问题

  • 缺省模块导入:代码中调用了os.path系列方法,如果没有提前写import os导入模块,会直接抛出名称错误。
  • 路径拼接逻辑错误:你定义的path已经是完整的Windows绝对路径,再用os.path.join和当前脚本所在目录拼接,最终生成的路径是非法路径,程序无法定位到PDF文件。
  • 文件打开模式错误:PDF属于二进制格式文件,不能用r(文本只读)模式打开,文本模式会自动处理换行符等编码内容,直接损坏PDF的二进制结构,必须使用rb(二进制只读)模式打开。
  • 文件对象提前关闭:with语法块结束后会自动关闭打开的文件对象,你在with块外调用send_document传入已经被关闭的input_file,无法正常读取内容。
  • 冗余代码无用:你读取了文件内容存入content变量,但后续全程没有调用该变量,属于无效代码。

修正后可运行的代码

import os
def textbooks(update, context):
    # 直接用完整绝对路径,不需要额外拼接
    path = r"C:\Users\Ya'we\Downloads\Python Practice Book (en)(1).pdf"
    chat_id = update.effective_chat.id
    # 方法1:直接传文件路径,框架会自动处理读取
    return context.bot.send_document(chat_id, document=open(path, 'rb'))

    # 方法2:用with块保证资源正确释放,在块内完成发送
    # with open(path, 'rb') as input_file:
    #     return context.bot.send_document(chat_id, document=input_file)

内容的提问来源于stack exchange,提问作者James Demisse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:06:03