Django裏使用open函數
阿新 • • 發佈:2018-02-14
統一 markdown app 就是 當前 使用 般的 裏的 問題
Django裏使用open函數
前言
在Django裏使用open函數打開一個文件的時候,常常會遇到路徑錯誤的問題。我在Django APP裏寫了一個爬蟲用於為網站提供數據,但是需要打開文件,也就是在這裏遇到了路徑錯誤,爬蟲本身運行起來是沒有問題,但是放到Django裏就出現了路徑出錯的問題。幾番查找,終於在Stack Overflow上找到了解決方法,Stack Overflow上提出的問題和我遇到的一模一樣,下面就簡單翻譯介紹下問題內容:
當腳本文件處於foo/myapp/anotherapp目錄,被讀取文件baz.txt也處於foo/myapp/anotherapp目錄時,一般的讀取該文件的代碼應該是這樣寫:
file = open(‘./baz.txt‘)
但是根據你啟動Django項目所在的路徑的不同,open函數裏的參數路徑也是不一樣的,如:
$pwd /Users/foo $python myapp/manage.py runserver
我們在/Users/foo目錄下啟動Django項目,open函數會使用foo作為根目錄
$cd myapp $pwd /Users/foo/myapp $python manage.py runserver
這樣的話,則會使用myapp作為根目錄
在打開baz.txt文件的時候,對應的open函數參數就要發生改變,分別為
file = open(‘./myapp/anotherapp/baz.txt‘)
和
file = open(‘./anotherapp/baz.txt‘)
那麽有什麽方法可以解決?我們可以采用讀取當前目錄,然後拼接的方式統一解決路徑問題。
import os module_dir = os.path.dirname(__file__) # 獲取當前目錄 file_path = os.path.join(module_dir, ‘baz.txt‘)
原文地址
Django裏使用open函數