有人能告诉我如何在Python中跨平台获取路径的父目录吗?如。
C:\Program Files ---> C:\
and
C:\ ---> C:\
如果目录没有父目录,则返回目录本身。这个问题似乎很简单,但我无法从谷歌中找到它。
有人能告诉我如何在Python中跨平台获取路径的父目录吗?如。
C:\Program Files ---> C:\
and
C:\ ---> C:\
如果目录没有父目录,则返回目录本身。这个问题似乎很简单,但我无法从谷歌中找到它。
当前回答
使用os.path.dirname:
>>> os.path.dirname(r'C:\Program Files')
'C:\\'
>>> os.path.dirname('C:\\')
'C:\\'
>>>
注意:os.path.dirname()会给出不同的结果,这取决于路径中是否包含后面的斜杠。这可能是也可能不是您想要的语义。Cf. @kender的答案使用os.path。加入(yourpath os.pardir)。
其他回答
import os
def parent_filedir(n):
return parent_filedir_iter(n, os.path.dirname(__file__))
def parent_filedir_iter(n, path):
n = int(n)
if n <= 1:
return path
return parent_filedir_iter(n - 1, os.path.dirname(path))
test_dir = os.path.abspath(parent_filedir(2))
假设我们有这样的目录结构
1]
/home/User/P/Q/R
我们想要从目录R中访问“P”的路径,然后我们可以访问using
ROOT = os.path.abspath(os.path.join("..", os.pardir));
2]
/home/User/P/Q/R
我们想要从目录R中访问“Q”目录的路径,然后我们可以访问using
ROOT = os.path.abspath(os.path.join(".", os.pardir));
获取父目录路径并创建新目录(名称为new_dir)
获取父目录路径
os.path.abspath('..')
os.pardir
示例1
import os
print os.makedirs(os.path.join(os.path.dirname(__file__), os.pardir, 'new_dir'))
示例2
import os
print os.makedirs(os.path.join(os.path.dirname(__file__), os.path.abspath('..'), 'new_dir'))
查找当前工作目录的父目录。
import pathlib
pathlib.Path().resolve().parent
只是在Tung的答案中添加了一些东西(如果你在unix机器上,你需要使用rstrip('/')来更安全)。
>>> input1 = "../data/replies/"
>>> os.path.dirname(input1.rstrip('/'))
'../data'
>>> input1 = "../data/replies"
>>> os.path.dirname(input1.rstrip('/'))
'../data'
但是,如果你不使用rstrip('/'),给定你的输入是
>>> input1 = "../data/replies/"
将输出,
>>> os.path.dirname(input1)
'../data/replies'
这可能不是你所看到的,因为你想要两者。/data/replies/" and "../data/回复“以同样的方式表现。