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

Python Telegram Bot启动报FileNotFoundError问题求助

解决方案

1. 检查PyCharm运行配置的工作目录

问题核心大概率是运行时工作目录被修改,导致相对路径解析错误。之前正常运行是因为工作目录是项目根目录E:\FindBot,现在可能被改成了E:\FindBot\handlers\users之类的子目录。

  • 打开PyCharm的「Run/Debug Configurations」
  • 找到你的机器人运行配置,查看「Working directory」选项
  • 确保它被设置为项目根目录E:\FindBot(而非子目录)

2. 用动态路径替代硬编码绝对路径

硬编码绝对路径会导致项目移动或部署时失效,推荐通过脚本自身路径动态生成文件路径:
修改loader.py中的文件读取代码:

import os

# 获取当前脚本(loader.py)所在的项目根目录
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# 拼接JSON文件的完整路径
json_file_path = os.path.join(BASE_DIR, "include", "sc_prices.json")

with open(json_file_path, encoding="utf-8") as file:
    # 你的后续处理逻辑
    data = json.load(file)

这种方式不管工作目录是什么,都能正确定位到sc_prices.json文件。

3. 排查机器人退出码0的原因

当使用绝对路径时,脚本返回Process finished with exit code 0说明脚本正常执行完毕,但机器人没有启动运行循环。检查你的启动逻辑:

  • 确保在主入口脚本(比如start.py或loader.py)中有启动机器人的代码:
from aiogram import executor

# 初始化dp等逻辑...

if __name__ == "__main__":
    # 启动长轮询模式
    executor.start_polling(dp, skip_updates=True)

如果缺少这段代码,脚本执行完初始化逻辑后就会直接退出,不会维持机器人运行。

4. 验证文件读取权限

重装Windows系统后,项目目录的权限可能发生变化:

  • 右键点击include文件夹,选择「属性」→「安全」
  • 确认当前登录用户拥有该文件夹的「读取」权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:35:01