首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取父目录位置

如何获取父目录位置
EN

Stack Overflow用户
提问于 2010-05-12 16:57:46
回答 11查看 185.2K关注 0票数 143

下面的代码是在b.py中获取模板/blog1/page.html:

代码语言:javascript
复制
path = os.path.join(os.path.dirname(__file__), os.path.join('templates', 'blog1/page.html'))

但是我想要获取父目录的位置:

代码语言:javascript
复制
aParent
   |--a
   |  |---b.py
   |      |---templates
   |              |--------blog1
   |                         |-------page.html
   |--templates
          |--------blog1
                     |-------page.html

以及如何获取aParent位置

谢谢

更新:

这是正确的:

代码语言:javascript
复制
dirname=os.path.dirname
path = os.path.join(dirname(dirname(__file__)), os.path.join('templates', 'blog1/page.html'))

代码语言:javascript
复制
path = os.path.abspath(os.path.join(os.path.dirname(__file__),".."))
EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2010-05-12 17:03:16

您可以重复应用目录名以爬得更高:dirname(dirname(file))。然而,这只能到达根包。如果这是一个问题,请使用os.path.abspathdirname(dirname(abspath(file)))

票数 194
EN

Stack Overflow用户

发布于 2013-01-04 11:38:30

os.path.abspath不验证任何东西,所以如果我们已经将字符串附加到__file__中,那么就不需要费心使用dirname或doesn或其他任何东西了。只需将__file__视为一个目录,并开始攀登:

代码语言:javascript
复制
# climb to __file__'s parent's parent:
os.path.abspath(__file__ + "/../../")

这远没有os.path.abspath(os.path.join(os.path.dirname(__file__),".."))那么复杂,并且和dirname(dirname(__file__))一样易于管理。超过两层的攀登开始变得荒谬起来。

但是,因为我们知道要爬多少层,所以我们可以用一个简单的小函数来清理它:

代码语言:javascript
复制
uppath = lambda _path, n: os.sep.join(_path.split(os.sep)[:-n])

# __file__ = "/aParent/templates/blog1/page.html"
>>> uppath(__file__, 1)
'/aParent/templates/blog1'
>>> uppath(__file__, 2)
'/aParent/templates'
>>> uppath(__file__, 3)
'/aParent'
票数 63
EN

Stack Overflow用户

发布于 2016-09-21 21:18:43

相对路径与Python 3.4+中的pathlib模块一起使用:

代码语言:javascript
复制
from pathlib import Path

Path(__file__).parent

您可以使用多个对parent的调用在path中更进一步:

代码语言:javascript
复制
Path(__file__).parent.parent

作为两次指定parent的替代方法,您可以使用:

代码语言:javascript
复制
Path(__file__).parents[1]
票数 62
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2817264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档