gpt4 book ai didi

python - 如何判断文件是否是给定目录的后代?

转载 作者:太空狗 更新时间:2023-10-29 21:38:23 25 4
gpt4 key购买 nike

从表面上看,这很简单,我可以轻松实现。只需连续调用 dirname() 以上升文件路径中的每一层并检查每一层以查看它是否是我们要检查的目录。

但是符号链接(symbolic link)把整个事情搞得一团糟。正在检查的文件或目录路径上的任何目录都可以是符号链接(symbolic link),并且任何符号链接(symbolic link)都可以具有指向其他符号链接(symbolic link)的任意符号链接(symbolic link)链。在这一点上,我的大脑融化了,我不知道该怎么做。我已经尝试编写代码来处理这些特殊情况,但很快就会变得太复杂,我认为我做错了。有没有一种相当优雅的方法来做到这一点?

我使用的是 Python,因此提及执行此操作的库会很酷。否则,这是一个与语言无关的问题。

最佳答案

使用os.path.realpathos.path.commonprefix :

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

os.path.realpath 将展开任何符号链接(symbolic link)以及文件名中的 ..os.path.commonprefix 有点变化无常——它并没有真正测试路径,只是简单的字符串前缀,所以你应该确保你的目录以目录分隔符结尾。如果你不这样做,它会声称 /the/dirtwo/filename 也在 /the/dir

关于python - 如何判断文件是否是给定目录的后代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3328012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com