print(__file__)返回<encoding error>的問題
阿新 • • 發佈:2017-06-29
odi 三層 port ase https tac urn abs clas
今天寫了一下代碼,本來是想得到當前文件的上面三層的目錄的,結果返回的卻是錯誤
import os import sys print(__file__) # 得到上上層目錄的路徑之後,加入到默認的環境變量中 BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) sys.path.append(BASE_DIR) print("******", BASE_DIR) 輸出結果: <encoding error> ******
然後在Stack Overflow中看到了以下說法
https://stackoverflow.com/questions/7783308/os-path-dirname-file-returns-empty
上面的大概意思說dirname和basename在分割路徑的時候並不會去考慮當前路徑,因此我們需要做以下修改,但是我之前寫過的一個程序用的是相同的代碼,可以執行,這讓我很費解,不過問題確實解決了,如果有好心的網友知道具體的原因,還請在下面評論中指點迷津
修改代碼:把__file__改成os.path.abspath(__file___)就可以了
import os import sys print(os.path.abspath(__file__)) # 得到上上層目錄的路徑之後,加入到默認的環境變量中 BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) sys.path.append(BASE_DIR) print("******", BASE_DIR)
print(__file__)返回<encoding error>的問題