2016-04-13 80 views
0

如何通過相對路徑獲取其他項目文件的絕對路徑,而不是Java項目中的那些python文件?如何通過相對路徑獲取其他項目文件的絕對路徑?

D:\Workspaces\ABCPythonProject\ 

|- src 
| |-- com/abc 
|  |-- conf.py 
|  |-- abcd.py 
|  |-- defg.py 
|  |-- installation.rst 
|- resources 
| |-- a.txt 
| |-- b.txt 
| |-- c.jpg 

例如,我想訪問「A.TXT」或在像在與像「資源/ A.TXT」變量以簡單的方式「abcd.py」蟒代碼「b.txt」,只是就像Java中的Java項目一樣。

總之,我希望得到 'd:\工作區\ ABCPythonProject \資源\ A.TXT' 由 '資源\ A.TXT',這是非常容易在Java中的事,但似乎是在Python中非常難以實現。 (如果我使用'os.filePath.join(os.filePath.dirname(_file__)','resources/a.txt')',os.path.dirname('resources/a.txt'),os.path.abspath('resources/a.txt'),...等,結果始終爲「D:\ Workspaces \ ABCPythonProject \ com \ abc \ resources \ a.txt「,非退出文件路徑。)

如何實現此目的?

回答

0

您可以使用這些內置python方法,但是如果您在../src/com/abc中調用腳本。您的os.filePath()函數將在當前目錄中執行。您的當前目錄是您的執行目錄(Python腳本的目錄!!) 首先,您應該更改目錄以訪問您的.txt文件,因爲python不會在「ABCPythonProject」目錄中執行。 顯然,您不能以這種方式訪問​​recourses/a.txt,因爲您必須切換到目錄「ABCPythonProject」來檢查此路徑。

os.chdir("D:\Workspaces\ABCPythonProject") 

您可以檢查您的目錄,您目前在:

print (os.getcwd()) 
0

此示例可能會從一個小的清潔受益,但它的工作。

import os 
k = os.path.abspath(os.path.join(".", os.pardir)) # one level up 
print k 
k = os.path.abspath(os.path.join(k, os.pardir)) # two levels up 
print k 
k = os.path.abspath(os.path.join(k, 'resources/a.txt')) # two levels down 
print k 

目錄開始C:\Users\Philip\AppData\Local\Temp\src\com輸出

C:\Users\Philip\AppData\Local\Temp\src 
C:\Users\Philip\AppData\Local\Temp 
C:\Users\Philip\AppData\Local\Temp\resources\a.txt 
相關問題