Django的[错误2]没有这样的文件或目录:

问题描述:

我已经建立了一个脚本来读取Excel文件和内容保存到我的数据库。 (注意:文件和脚本位于不同的目录中)。然而,当我试图从我views.py作为一个简单的导入执行脚本,Django的抛出一个错误,它无法找到文件或目录:Django的[错误2]没有这样的文件或目录:

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

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

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

在哪里我的脚本是在父目录。从命令行执行脚本工作得很好,所以我正在努力解决为什么Django正在以不同的方式阅读它。

views.py功能看起来像这样(注:我回去的父目录中找到该脚本 - 这似乎是做工精细,只是找不到Excel文件,我需要阅读):

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

任何指导,不胜感激!

当您从终端脚本
+0

剧本GDRAT.py – user3238647

+1

你为什么不与目录'媒体/加入吧'是下? –

+0

你累了用django的xlrd * outside *打开它吗?在外壳或终端? – yuvi

,你必须从中任何相对路径开始,呼吁从另一个代码的工作目录可以是不同的同一个脚本时,当前工作目录。

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

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

__file__给你当前文件的路径是脚本(假设这行代码放在脚本中);
的目录名称见http://docs.python.org/2/library/os.path.html#os.path.dirname
的真实路径看http://docs.python.org/2/library/os.path.html#os.path.realpath

+0

我试图实现这个解决方案,但没有(_file_)将我的脚本添加到路径?当我打印GDRAT_abs_path(看看发生了什么),在终端,我看到GDRAT.py/media/documents..etc ..我怎样才能逃出GDRAT.py,但仍使用动态路径? – user3238647

+0

顺便说一句 - 我是能够利用这一点,但必须切开的GDRAT.py出GDRAT_abs_path,并建立一个替代物 - 有点笨重,但工作.. – user3238647

+0

哎呀,你是对的:)我应该有包装os.path中。真正的路径os.path.dirname,我修复了答案 –

这对我的作品

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