在python中获取文件夹的正确路径

时间:2013-01-20 12:26:46

标签: python path

我的目录结构如下

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

我需要从mycode.py

获取templates文件夹的绝对路径

我尝试将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 个答案:

答案 0 :(得分:4)

该路径 是正确的,请尝试一下。但是,如果您想要删除冗余的“项目/../”部分以获得清晰度,请使用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

答案 1 :(得分: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

考虑到这些评论,我做了正确的编辑。

答案 2 :(得分:0)

我尝试了这个,似乎有效

parentpath=os.path.abspath(os.path.join(os.path.dirname(__file__),".."))
apptemplates=os.path.join(parentpath,'app/templates')

答案 3 :(得分:0)

这有效:

apptemplates = os.path.join(os.path.split(PRJ_FLDR)[0], "app/templates")