如何确定文件路径的深度?



我有一个像这样的字符串路径:

path = "directory/folder1/folder2/folder3/file1.txt"

我想知道这条路径有多少层——在本例中是4层(directory,folder1,folder2,folder3)。

在Python中最好的方法是什么?我想计算"/":

path.count("/")

但是我想知道是否有更好的方法。

使用pathlib:

可以很容易地做到这一点
from pathlib import Path
path = Path("directory/folder1/fodler2/folder3/file1.txt")
print(len(path.parents), list(path.parents))

给了:

5 [Path('directory/folder1/fodler2/folder3'), Path('directory/folder1/fodler2'), Path('directory/folder1'), Path('directory'), Path('.')]

可以看到,结果是5,因为"."也在列表中,因为"directory/folder1/fodler2/folder3/file1.txt"隐式地等于"./directory/folder1/fodler2/folder3/file1.txt",所以你总是可以从结果中减去1。


path.count('/')相比,这是与平台无关的…

这完全取决于你想要多精确。我能想到的问题:

  • 您确定字符串的最后一部分是文件名吗?如果是目录,有关系吗?

  • 您确定路径分隔符是'/'吗?操作系统。Sep是分隔符。

  • 如果字符串以os.sep开头怎么办?

  • 如果有些os。Sep是重复的?例如os.path.exists("/var//log")返回True

这可能稍微好一点,但解决方案是使用pathlib。路径肯定更好。

os.path.normpath(path).count(os.sep)

也许path.count(os.sep)是一个最优解。然而,托梅里库的答案比这更好。但是,请确保安装了pathlib模块,因为该模块在python2的标准发行版中默认不包含。但是如果你使用python3。那么它是默认的。