2009-12-28 55 views
0

嘿。我有在Python,它的目錄佈局的項目如下:如果你不知道你的出發點,在Python中相對訪問一個文件?

root 
    |-bin 
    |-conf 
    |-[project] 

在[項目] Python文件需要能夠從「的conf」目錄中讀取配置數據,但我不能保證位置的根,加上它可以在Linux,Mac和Windows機器上使用,所以我試圖從根目錄相對地解決conf目錄。

在它的工作有一個骯髒的黑客分鐘(從根/箱,尤其是蟒蛇文件名是8個字符長):

path = os.path.abspath(__file__)[:-8] 
os.chdir(path) 
os.chdir("..") 
[projectclass].config('config/scans.json') #for example 

但是,這是特別可怕的,並給了我的噩夢。有沒有更好的方法來完成我想要達到的目標,但不會覺得太髒?我覺得我失去了一些非常明顯的東西。提前致謝。

回答

2

相反的:

path = os.path.abspath(__file__)[:-8] 

使用:

path = os.path.dirname(os.path.abspath(__file__)) 

請參閱該文檔here

+0

該死的,不敢相信我錯過了。我的藉口是這裏遲到了! 雖然還是覺得髒! – Loix0

+0

@ Loix0,你能清楚地說出你對此感覺「髒」嗎? '__file__'告訴你「你在哪裏」,這是你從哪裏導航。也許使用'os.path.join'而不是'os.chdir',如果它只是一個或兩個文件,你需要從目錄'conf'中讀取......? –

+0

它根本不髒。它正在使用* __ file __ *,因爲它是打算使用的。 –

相關問題