答案 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
的文档。