我的目录结构如下
/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
如何获得正确的路径?
答案 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")