2016-04-13 12 views
0

Wie bekomme ich den absoluten Pfad über den relativen Pfad für 'andere' Projektdateien, nicht diese Python-Datei im Projekt, wie Java?Wie erhält man den absoluten Pfad über den relativen Pfad für 'andere' Projektdateien?

D:\Workspaces\ABCPythonProject\ 

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

Zum Beispiel würde Ich mag Zugang 'a.txt' oder 'b.txt' in Python-Codes wie 'abcd.py' auf einfache Weise mit variabler wie 'Ressource/a.txt', nur wie ein Java-Projekt in Java.

Kurz gesagt, ich will get 'D: \ Workspaces \ ABCPythonProject \ resources \ a.txt' durch 'resources \ a.txt', die extrem einfach in Java zu tun, sondern ist scheinbar extrem schwer in Python zu erreichen.

(Wenn ich die integrierten Python-Methoden wie 'os.filePath.join (os.filePath.dirname (_file__),' resources/a.txt ')', os.path.dirname ('resources/a.txt '), os.path.abspath (' resources/a.txt '), ..., usw., das Ergebnis ist immer "D: \ Workspaces \ ABCPythonProject \ com \ abc \ resources \ a.txt ", ein Nicht-Exit-Dateipfad.)

Wie erreicht man dies?

Antwort

0

Sie können diese integrierten Python-Methoden verwenden, aber wenn Sie Ihr Skript in ../src/com/abc aufrufen. Ihre os.filePath() Funktion wird in Ihrem aktuellen Verzeichnis ausgeführt. Ihr aktuelles Verzeichnis ist Ihr Ausführungsverzeichnis (Verzeichnis des Python-Skripts !!) Zunächst sollten Sie das Verzeichnis wechseln, um auf Ihre .txt-Datei zugreifen zu können, da Python nicht in Ihrem "ABCPythonProject" -Verzeichnis ausgeführt wird. Offensichtlich können Sie auf diese Weise nicht auf rekurses/a.txt zugreifen, weil Sie in das Verzeichnis "ABCPythonProject" wechseln müssen, um diesen Pfad zu überprüfen.

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

Sie können Ihr Verzeichnis überprüfen, Sie sind zur Zeit mit:

print (os.getcwd()) 
0

Diese Probe aus einer kleinen Reinigung profitieren könnten, aber es macht den Job.

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 

Ab Verzeichnis C:\Users\Philip\AppData\Local\Temp\src\com Ausgang ist

C:\Users\Philip\AppData\Local\Temp\src 
C:\Users\Philip\AppData\Local\Temp 
C:\Users\Philip\AppData\Local\Temp\resources\a.txt 
Verwandte Themen