django [Errno 2]没有这样的文件或目录:

时间:2014-01-26 22:48:03

标签: python django

我已经构建了一个脚本来读取excel文件并将内容保存到我的数据库中。 (注意:文件和脚本位于不同的目录中)。但是,当我尝试从我的views.py执行脚本作为一个简单的导入时,django会抛出一个无法找到文件或目录的错误:

[Errno 2] No such file or directory: '\\media\\documents\\GDRAT.xls\\'

我在脚本中的实际代码如下所示:

source_wb = xlrd.open_workbook('media/documents/GDRAT.xls')

我的脚本位于父目录中。从命令行执行脚本工作正常,所以我正在努力解决为什么django以不同的方式阅读它。

我的views.py函数看起来像这样(注意:我回到父目录找到脚本 - 这似乎工作正常,只是找不到我需要读取的excel文件):< / p>

def UpdateGDRAT(request):
    os.chdir('..')
    import GDRAT
    return render_to_response('success.html')

非常感谢任何指导!

3 个答案:

答案 0 :(得分:5)

这对我有用

 os.path.join(os.path.dirname(os.path.dirname(__file__)),'media/documents/GDRAT.xls')

答案 1 :(得分:3)

当您从终端运行脚本时,您有一个当前工作目录,任何相对路径都从该目录开始,当从另一个代码调用相同的脚本时,您的工作目录可能会有所不同。

如果你知道文件相对于脚本的位置,我建议你使用这样动态构造的绝对路径:

import os
GDRAT_abs_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'media/documents/GDRAT.xls')

__ file__为您提供当前文件的路径(假设该行放在脚本中);
对于dirname,请参阅http://docs.python.org/2/library/os.path.html#os.path.dirname
对于realpath,请参阅http://docs.python.org/2/library/os.path.html#os.path.realpath

答案 2 :(得分:0)

选择此方法来修复这些错误。对我来说很好

第1步:安装pipenv

pip install pipenv

第2步:打开PipEnv Shell

pipenv shell

第3步:使用pip安装Django

pip install django

第4步:在Django中启动一个新项目

django-admin startproject projectname

第5步:在内部导航,然后生成项目文件夹

cd projectname

第6步:(可选)列出目录中的文件

ls

第7步:在端口:8081中启动服务器

python manage.py runserver 8081