2017-02-11 71 views
0

我有一個目錄結構等如何使用從腳本位置

MainFolder/unitTest/test.py 
MainFolder/run.py 
MainFolder/model/file.py 
MainFolder/config/config.conf 

內file.py我試圖打開一個文件的相對路徑時打開Python中的文件

f = open('config/config.conf', 'r') 

通常從run.py中調用file.py。當前的工作目錄是run.py的目錄。所以如果我想訪問配置文件。我去配置文件夾,然後到文件'config/config.conf' 如果我想從單元測試運行它,我需要去一個級別,然後進入配置文件夾。 '../config/config.conf'

有沒有一種辦法,在打開一個文件時,它開始尋找從哪裏file.py所在的文件,這樣無論在哪裏file.py被稱爲從我可以訪問該文件爲../config/config.conf

這是要在遠程服務器上託管,所以我不能給它的完整路徑...

回答

0

當然,只需創建一個文件,例如在您的項目根目錄下的pwd.py。

import os 

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

然後在你的模塊:

from pwd import PWD 

f = open('%s/config/config.conf' % PWD, 'r') 
+0

這工作。 Tbh我發現它有點愚蠢,沒有辦法從文件的路徑實際上是在文件中。但這沒有工作 – bpb101

0

你需要什麼可能是在Python modules組織您的代碼。它可以幫助您以Pythonic的方式設計/訪問/管理每個文件。

要解決您的問題,您可以通過將MainFolder設置爲file.py開頭的os.chdir作爲當前工作目錄解決問題。這意味着您需要使用run.py中的os.path.getcwd來找到MainFolder的完整路徑,並在部署時將其存儲在配置文件中。