我有一个像这样的字符串路径:
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。那么它是默认的。