雖然有軟體目錄開發規範,可以在啟動檔案裡向下面這樣添加BASE_DIR:
但是平時自己寫腳本的時候,并不想搞得太正規。但是在一個程式中需要打開某個檔案是時候,又會遇到路徑的問題。
這裡是打開檔案,不是加載子產品。如果是import的問題,隻需要調用 <code>sys.path.append(DIR)</code> ,把某個目錄加到環境變量中去就可以了。
有一個配置檔案 settings.py ,不想把密碼等敏感資訊寫在配置檔案裡,是以單獨建立了一個檔案 password.txt 用于存放密碼等敏感資訊,假設就在同一個檔案夾下,那麼 settings.py 要加載 password.txt 裡的内容,需要打開檔案:
啟動同一檔案夾下的程式,讀取配置檔案都沒有問題。但是如果程式在别的位置,就會報錯。找不到 password.txt 檔案。原因很簡單,啟動路徑變了。
上面的做法,都是把啟動檔案的檔案夾作為相對路徑的目前目錄,然後查找要打開的檔案。
不想把路徑寫死,否則路徑的位置或者中間的任何檔案夾的名稱變動,都會影響查找檔案。就需要用動态的方法擷取到路徑。
<code>__file__</code> 是用來獲得子產品所在的路徑的。這可能得到的是一個相對路徑,也可能是絕對路徑。按絕對路徑執行則得到的是絕對路徑,按相對路徑執行則得到的是相對路徑。相對路徑或絕對路徑都無所謂。
在 settings.py 裡擷取 <code>__file__</code> 屬性就得到了 settings.py 檔案所在的路徑,這樣就動态的擷取到路徑了。之後再進行處理拼接出 password.txt 檔案的路徑。這樣無輪從哪裡啟動程式,隻要能夠 <code>import settings</code> 就沒有問題了。
路徑的處理,就是 os.path 子產品: