0

在 python 的 filecmp.py 中,有 cmp 函数

def cmp(f1, f2, shallow=1):
    s1 = _sig(os.stat(f1))
    s2 = _sig(os.stat(f2))
    if s1[0] != stat.S_IFREG or s2[0] != stat.S_IFREG:
        return False
    if shallow and s1 == s2:
        return True
    if s1[1] != s2[1]:
        return False
    #content compare
    ......

因此,当 shallow 为真时,此函数仅比较两个文件的名称 mtime(修改时间)和文件模式。好吧,对我来说,如果这些文件实际上是一个文件,那么它们肯定是相同的。如果它们不是一个文件,那么我认为修改时间不可能相同。

然后,恕我直言,当 shallow = 1 时该函数的唯一用法是检查我们比较的两个文件是否实际上是一个文件~.. 我敢肯定我的猜测是错误的,python 在它的库中不会有这样的废话。 .

请有人告诉我 filecmp.cmp(f1, f2, shallow=1) 在什么情况下有用?

4

1 回答 1

0

你误读了。如果shallow打开并且文件的os.stat()签名不同,则该函数不返回False. 相反,该函数继续进行进一步检查。

于 2013-08-14T01:37:19.080 回答