时间:2010-07-25 04:30:53

标签: python filesystems

3 个答案:

答案 0 :(得分:8)

答案 1 :(得分:1)

Python 3.5具有有用的功能os.path.commonpath

  

返回序列路径中每个路径名的最长公共子路径。如果路径包含绝对路径名和相对路径名,或路径为空,则引发ValueError。与commonprefix()不同,这会返回有效路径。

因此,要检查文件是否是目录的后代,您可以这样做:

os.path.commonpath(["/the/dir", os.path.realpath(filename)]) == "/the/dir"

commonprefix不同,您不必担心输入是否有斜杠。 commonprefix的返回值始终缺少尾部斜杠。

答案 2 :(得分:0)

在Python 3中执行此操作的另一种方法是使用pathlib

from pathlib import Path

is_descendant = Path("/the/dir") in Path(filename).resolve().parents

请参阅Path.resolve()Path.parents的文档。