如何在python中获取特定父目录的路径

如何在python中获取特定父目录的路径,python,Python,我有path=“dir1/dir2/dir3/file.py” 我需要一种方法来获取指向dir2的完整路径,即dir1/dir2 类似于findparent(path,'dir2')您可以按目标目录拆分路径,从列表中获取第一个元素,然后将目标目录添加到目标路径 path = "dir1/dir2/dir3/file.py" def findparent(path: str, dir_: str) -> str: return path.split(dir_)[

我有
path=“dir1/dir2/dir3/file.py”

我需要一种方法来获取指向
dir2
的完整路径,即
dir1/dir2


类似于
findparent(path,'dir2')

您可以
按目标目录拆分路径,从列表中获取第一个元素,然后将目标目录添加到目标路径

path = "dir1/dir2/dir3/file.py"

def findparent(path: str, dir_: str) -> str:
    return path.split(dir_)[0] + dir_

print(findparent(path, 'dir2'))
# dir1/dir2 

您可以按目标目录拆分路径,从列表中获取第一个元素,然后将目标目录添加到目标路径

path = "dir1/dir2/dir3/file.py"

def findparent(path: str, dir_: str) -> str:
    return path.split(dir_)[0] + dir_

print(findparent(path, 'dir2'))
# dir1/dir2 
如果使用,且路径实际存在:

path.resolve().parent
只是
path.parent
在语法上也可以工作,但是有一些文档中提到的注意事项

要查找父层次结构的一个特定部分,可以迭代调用
parent
,或搜索所需的名称。

如果使用并且路径实际存在:

path.resolve().parent
只是
path.parent
在语法上也可以工作,但是有一些文档中提到的注意事项


要查找父层次结构的一个特定部分,可以反复调用
parent
,或搜索所需的名称。

假设当前工作目录与
dir1
位于同一位置,则可以执行以下操作:

import os
os.path.abspath("dir1/dir2")

假设当前工作目录与
dir1
位于同一位置,则可以执行以下操作:

import os
os.path.abspath("dir1/dir2")
看看这个

我最喜欢的是

from pathlib import Path

Path(__file__).parent.parent.parent # ad infinitum
你甚至可以写一个循环来达到dir2,类似这样的

from pathlib import Path
goal_dir = "dir2"
current_dir = Path(__file__)
for i in range(10):
    if current_dir == goal_dir:
        break
    current_dir = current_dir.parent
注意:此解决方案不是最好的,您可能希望使用while循环,并检查是否确实存在父级。如果您在根级别,并且没有父级,那么它就不存在。但是,假设它存在,并且你没有一棵树深度超过10层,这是可行的。

看看这个

我最喜欢的是

from pathlib import Path

Path(__file__).parent.parent.parent # ad infinitum
你甚至可以写一个循环来达到dir2,类似这样的

from pathlib import Path
goal_dir = "dir2"
current_dir = Path(__file__)
for i in range(10):
    if current_dir == goal_dir:
        break
    current_dir = current_dir.parent

注意:此解决方案不是最好的,您可能希望使用while循环,并检查是否确实存在父级。如果您在根级别,并且没有父级,那么它就不存在。但是,假设它存在,并且你没有一个深度超过10层的树,这是可行的。

path.split('dir2')[0]
?@venky\uuuuuu这不会输出他想要的。@venky\uuuu感谢你的回答,我正在寻找一个内置函数,比如
os.path.findparent(/code>,我忘了提到它。
path.split('dir2')[0]
?@venky\uuuuu。这不会输出他想要的东西。@venky\uuu。谢谢你的回答,我正在寻找一个内置函数,如
os.path.findparent
,我忘了提到它。
。parent
只会返回父目录的路径,而不是
dir2
,对吗,我一开始就错过了这个要求。
.parent
只会返回到父目录的路径,而不是返回到
dir2
,不是吗?对,我一开始错过了这个要求。我的工作目录是
dir3
so
abspath('dir1/dir2')
不是应答我的工作目录是
dir3
so
abspath('dir1/dir2')
不是答案我想知道这一点,但不需要自己定义函数,如果没有人提到具有相同功能的内置函数,那么我会将其标记为已接受answer@Tomergt45另外,我添加了
path:str
来指向函数需要获取的数据类型指出函数将返回的数据类型。Ahla:)我理解这一点,但因为这是一个小函数,所以实际上不需要声明types@Tomergt45这是我的写作风格(';我会精确地查找它,但不需要自己定义函数,如果没有人会提到具有相同功能的内置函数,那么我会将其标记为已接受answer@Tomergt45另外,我添加了
path:str
来指向函数需要获取的数据类型,
->str
指向数据类型that函数将返回。Ahla:)我理解这一点,但因为这是一个小函数,所以实际上不需要声明types@Tomergt45这是我的写作风格;