我在 a/b/c/d/e/f/x.xml
位置有一个文件。我需要找到目录 d
的绝对路径,即层次结构中与目录名称 d
匹配的父目录。
我可以获得文件名的当前目录作为 os.path.abspath(__file__)
。我已经看到 pathlib 的文档和 glob ,但无法弄清楚我将如何使用它们。
谁能帮忙
编辑:
感谢下面的所有答案,我已经得到了一个类轮
os.path.join(*list(itertools.takewhile(lambda x: x != 'd', pathlib.PurePath(os.getcwd()).parts)))
我还需要将实际的目录名称附加到它,即输出应该是 a/b/c/d
。下面是一个丑陋的解决方案(使用 os.path.join 两次)。有人可以修复它吗(通过在一行中向迭代器或列表添加一个元素:)
os.path.join(os.path.join(*list(itertools.takewhile(lambda x: x != 'd', pathlib.PurePath(os.getcwd()).parts))),"d")
最佳答案
您可以在 __file__
的 abspath
上使用 dirname
来获取 x.xml 的完整路径 :
os.path.dirname(os.path.abspath(__file__))
>>> import pathlib
>>> p = pathlib.PurePath('a/b/c/d/e/f/x.xml')
>>> p.parts
('a', 'b', 'c', 'd', 'f', 'x.xml')
然后您可以提取路径的任何部分。如果你想获取d
文件夹:
import itertools
res = '/'.join(itertools.takewhile(lambda x: x != 'd', p.parts))
关于 python : how to get absolute path for a parent dir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46904428/