检查目录路径是否为sam

2024-05-29 11:05:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要评估两个字符串是否引用同一个目录(由于可能的虚拟链接等原因,做一个简单的比较是不够好的)

我已经研究了filecmp,但是filecmp.cmp似乎只对文件有效,而不是目录。filecmp.dircmp似乎并不完全符合我的目的。你知道吗

因此,我现在是这样做的:

if os.path.realpath(old_path) == os.path.realpath(new_path):
    raise ValueError('Need different path!')

有人有更好的主意吗?是否有任何边缘的情况下,这将不工作?你知道吗


Tags: 文件path字符串目的目录newifos
1条回答
网友
1楼 · 发布于 2024-05-29 11:05:30

一种可能的边缘情况是多个挂载点/绑定挂载。如果您可以访问Linux计算机,请以root用户身份尝试:

$ mkdir -p /tmp/a /tmp/b /tmp/c
$ mount  bind /tmp/c /tmp/a
$ mount  bind /tmp/c /tmp/b

/tmp/a和/tmp/b路径现在引用相同的目录:

$ echo 'Hello' > /tmp/a/file.txt
$ cat /tmp/b/file.txt
Hello

在你的情况下,如果不知道为什么要检查这个等式,很难判断这是否是一个问题。如果这只是一个理智的检查,你最初的比较似乎很合理。你知道吗

否则,如果您的平台支持,您可以尝试使用os.stat()比较inode编号。相同的目录应该有相同的索引节点号。你知道吗

相关问题 更多 >

    热门问题