2016-04-13 21 views
0

Javaのようにプロジェクト内のpythonファイルではなく、 'other'プロジェクトファイルの相対パスで絶対パスを取得する方法は?例えば'他の'プロジェクトファイルの相対パスで絶対パスを取得する方法は?

D:\Workspaces\ABCPythonProject\ 

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

、私は、「リソース/ A.TXT」のような変数を使用した簡単な方法で「abcd.py」のようなPythonのコードにアクセス「A.TXT」または「B.TXT」を希望JavaのJavaプロジェクトのようなものです。 Javaで行うのは非常に簡単ですが、一見である 'リソース\ A.TXT' によって:要するに

、私は '\ワークスペース\ ABCPythonProject \リソース\ A.TXT D' を取得したいですPythonで達成するのは非常に困難です。

(os.filePath.join(os.filePath.dirname(_file__)、 'resources/a.txt') 'などの組み込みのPythonメソッドを使用する場合は、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スクリプトのディレクトリ!!) 最初は、あなたの "ABCPythonProject"ディレクトリでpythonが実行されないので、あなたの.txtファイルにアクセスするためにディレクトリを変更する必要があります。 このパスを確認するには、ディレクトリ "ABCPythonProject"に変更する必要があるので、明らかにこの方法でrecourses/a.txtにアクセスすることはできません。

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 
です
関連する問題