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

Crontab运行Python脚本时Telegram Bot无法读取本地PNG文件怎么办?

解决crontab运行Python脚本时Telegram Bot无法读取本地图片的问题

1. 修复代码的模块缺失问题

你的代码里用到了os.path.abspath但没导入os模块,这会直接触发运行错误,先补上导入语句:

import os
import telegram
chat_id = '***'
BOT_TOKEN = '***'
bot = telegram.Bot(token=BOT_TOKEN)

bot.sendPhoto(photo=open(os.path.abspath('./github/project/photo.png'), 'rb'), chat_id=chat_id)

2. 用绝对路径替代相对路径

crontab执行任务时的默认工作目录是用户主目录,相对路径容易出现解析偏差,最稳妥的方式是直接写图片的完整绝对路径:

# 替换成你图片的真实绝对路径,可通过终端执行 realpath ~/github/project/photo.png 获取
photo_path = '/home/yourname/github/project/photo.png'
bot.sendPhoto(photo=open(photo_path, 'rb'), chat_id=chat_id)

3. 检查文件权限

确保执行crontab的用户(也就是你的账号)对图片文件和所在目录有读取权限:

# 给图片添加读取权限
chmod +r ~/github/project/photo.png
# 确保目录有访问权限
chmod +x ~/github/project/

4. 排查crontab执行环境

可以在脚本开头加入环境信息输出,方便定位问题:

import os
print("当前工作目录:", os.getcwd())
print("环境变量PATH:", os.environ.get('PATH'))

之后查看日志~/log/output.log,确认工作目录和路径是否符合预期。

5. 避免在crontab中使用波浪号~(可选)

部分场景下crontab对波浪号的解析不如终端准确,建议把crontab配置里的路径改成完整绝对路径,比如将~/github/project/test.py替换为/home/yourname/github/project/test.py。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 09:05:10