2014-01-26 128 views
3

我已經建立了一個腳本來讀取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

回答

2

,你必須從中任何相對路徑開始,呼籲從另一個代碼的工作目錄可以是不同的同一個腳本時,當前工作目錄。

如果您知道相對於腳本文件的位置,我建議你使用動態構建這樣一個絕對路徑:

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,我修復了答案 –

4

這對我的作品

os.path.join(os.path.dirname(os.path.dirname(__file__)),'media/documents/GDRAT.xls') 
相關問題