开发者

What exactly does a non-shallow filecmp.cmp do?

I'm using Python 2.6.2. The docs for the filecmp module say:

The filecmp module defines fu开发者_C百科nctions to compare files and directories, with various optional time/correctness trade-offs.

and, of the filecmp.cmp function:

filecmp.cmp(f1, f2[, shallow])

Compare the files named f1 and f2, returning True if they seem equal, False otherwise.

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

What they don't do is specify just what is the correctness level one obtains with shallow=False. So, what does shallow=False do? How correct is it?


Consulting the source filecmp.py reveals that if shallow=False, filecmp.cmp first checks a few select properties of os.stat(), regardless of whether shallow is True or False. If the stat properties that are examined are the same, it returns True. Else, it checks its internal cache to see if the files have already been compared earlier. If it has, it returns True. Else, it reads BUFSIZE = 8*1024 chunks of data from both files and does an exact contents comparison until it reaches the end of the file. It returns True if the two files have exactly the same contents.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜