非浅文件cmp.cmp 到底有什么作用?
我正在使用Python 2.6.2。 filecmp 模块的文档说:
filecmp 模块定义了比较文件和目录的函数,以及各种可选的时间/正确性权衡。
以及 filecmp.cmp 函数的:
filecmp.cmp(f1, f2[, 浅])
比较名为 f1 和 f2 的文件,如果它们看起来相等则返回 True,否则返回 False。
除非给出了shallow并且为假,否则具有相同os.stat()签名的文件被认为是相等的。
他们没有做的是指定使用 shallow=False
获得的正确性级别是多少。那么,shallow=False
是做什么的呢?它有多正确?
I'm using Python 2.6.2. The docs for the filecmp module say:
The filecmp module defines functions 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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
查阅源
filecmp.py
显示,如果shallow=False
,filecmp.cmp
首先检查os.stat()
的一些选择属性,无论>shallow
为True
或False
。如果检查的统计属性相同,则返回True
。否则,它会检查其内部缓存以查看文件是否已在之前进行过比较。如果有,则返回True
。否则,它会从两个文件中读取BUFSIZE = 8*1024
数据块,并进行精确的内容比较,直到到达文件末尾。如果两个文件的内容完全相同,则返回 True。Consulting the source
filecmp.py
reveals that ifshallow=False
,filecmp.cmp
first checks a few select properties ofos.stat()
, regardless of whethershallow
isTrue
orFalse
. If the stat properties that are examined are the same, it returnsTrue
. Else, it checks its internal cache to see if the files have already been compared earlier. If it has, it returnsTrue
. Else, it readsBUFSIZE = 8*1024
chunks of data from both files and does an exact contents comparison until it reaches the end of the file. It returnsTrue
if the two files have exactly the same contents.