1. 程式人生 > >print(__file__)返回<encoding error>的問題

print(__file__)返回<encoding error>的問題

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>的問題