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

Django 1.9从项目根目录读取文件触发FileNotFoundError求助

排查Django 1.9中文件找不到的问题

我来帮你一步步排查这个FileNotFoundError的问题,咱们从核心点入手:

1. 先搞清楚BASE_DIR到底指向哪里

你配置的BASE_DIR计算逻辑是对的,但实际指向的路径可能和你想的不一样。先在你的post视图里加几行打印代码,确认真实路径:

import os
from django.conf import settings

def your_post_method(request):
    # 先打印BASE_DIR的实际值
    print("当前BASE_DIR:", settings.BASE_DIR)
    # 打印拼接后的完整文件路径
    target_path = os.path.join(settings.BASE_DIR, "file1.txt")
    print("尝试访问的文件路径:", target_path)
    
    # 尝试打开文件并捕获详细错误
    try:
        with open(target_path, 'r', encoding='utf-8') as file_:
            content = file_.read()
    except FileNotFoundError as e:
        print("错误详情:", str(e))

触发post请求后看控制台输出,就能明确路径是否真的指向你放文件的C:\根目录。

2. 核对项目实际目录结构

你说C:\下直接放了settings.py和file1.txt,但正常Django项目的结构应该是两层嵌套:

C:\你的项目名\
    你的项目名\
        settings.py
        urls.py
        wsgi.py
        __init__.py
    file1.txt

如果是这种标准结构,那BASE_DIR其实指向的是外层的C:\你的项目名\,而非C:\根目录。这时候如果你的file1.txt真的放在C:\下,就得把路径改成:

os.path.join(os.path.dirname(settings.BASE_DIR), "file1.txt")

3. 检查文件本身的问题

  • 确认文件名拼写完全一致,比如别把file1.txt写成了File1.txt(Windows虽然不区分大小写,但代码里写错还是会触发错误);
  • 检查文件权限:C:\根目录的文件可能需要管理员权限才能读取,你可以先把file1.txt移到项目根目录下(比如和外层你的项目名文件夹同级),再用原来的路径尝试,权限问题大概率会解决。

4. 用绝对路径直接测试

如果还是不确定,直接用硬编码的绝对路径测试:

with open(r"C:\file1.txt", 'r', encoding='utf-8') as file_:
    content = file_.read()

如果这样能打开,说明是BASE_DIR的拼接逻辑和你预期不符;如果还是报错,那要么文件不在这个位置,要么就是系统权限限制了读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:37:06