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

我希望 apptemplates 是

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

但我得到

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

如何获得正确的路径?

4

4 回答 4

5

那条路对的,试试看。但是,如果您想为了清楚起见删除多余的“项目/../”部分,请使用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

我试过这个,它似乎工作

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

这有效:

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