On 9/6/2010 1:18 PM, tinn...@isbd.co.uk wrote:
I'm using filecmp.cmp() to compare some files (surprise!).

The documentation says:-
     Unless shallow is given and is false, files with identical
     os.stat() signatures are taken to be equal.

Reword and read carefully: if shallow == True and signatures are identical, then files are taken to be equal.

Here is the corresponding code from Lib/filecmp.py:
    if shallow and s1 == s2:
        return True

Does not say the result for non-identical signatures ;-).

I'm not setting shallow explicitly so it's True, thus the function
should be comparing the os.stat() results.  However this doesn't seem
to be the case as even if I touch one of the files to change it's
access/modification date filecmp.cmp() still returns True.

Because it goes on to actually compare the files, and they are equal.

...
    result = _cache.get((f1, f2))
    if result and (s1, s2) == result[:2]:
        return result[2]
    outcome = _do_cmp(f1, f2)
    _cache[f1, f2] = s1, s2, outcome
    return outcome

Most of the stdlib files in Python are quite readable. I recommend it when you have questions.

--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to