2

私は以下のようなディレクトリ構造を持っています

/home/damon/dev/python/misc/path/
                                /project/mycode.py
                                /app/templates/

mycode.py からテンプレート フォルダーの絶対パスを取得する必要があります。

mycode.pyとして書いてみました。

import os

if __name__=='__main__':
    PRJ_FLDR=os.path.dirname(os.path.abspath(__file__))
    print 'PRJ_FLDR=',PRJ_FLDR
    apptemplates = os.path.join(PRJ_FLDR,'../app/templates')
    print 'apptemplates=',apptemplates

アプリテンプレートは

/home/damon/dev/python/misc/path/app/templates

しかし、私は得ています

/home/damon/dev/python/misc/path/project/../app/templates

正しいパスを取得するにはどうすればよいですか?

4

4 に答える 4

5

そのパス正しいです、試してみてください。ただし、わかりやすくするために冗長な「project/../」セクションを削除する場合は、次を使用しますos.path.normpath

os.path.normpath(path)

パス名を正規化します。これにより、冗長なセパレーターと上位レベルの参照が折りたたまれ、A//B、A/B/、A/./B、および A/foo/../B がすべて A/B になります。

http://docs.python.org/2/library/os.path.html#os.path.normpath

于 2013-01-20T12:41:34.893 に答える
1

これは、あなたの望むことですか?

import os

if __name__=='__main__':
    PRJ_FLDR=os.path.dirname(os.path.abspath(__file__))
    print 'PRJ_FLDR=',PRJ_FLDR
    apptemplates = os.path.abspath(os.path.join(PRJ_FLDR, '../app/templates'))
    print 'apptemplates=',apptemplates

コメントを考慮して、適切な編集を行いました。

于 2013-01-20T12:28:37.813 に答える
0

これは機能します:

apptemplates = os.path.join(os.path.split(PRJ_FLDR)[0], "app/templates")
于 2013-01-20T12:46:20.550 に答える
0

私はこれを試しましたが、うまくいくようです

parentpath=os.path.abspath(os.path.join(os.path.dirname(__file__),".."))
apptemplates=os.path.join(parentpath,'app/templates')
于 2013-01-20T12:37:48.537 に答える