检查文件是否相等
在Python中检查文件是否相等的最优雅的方法是什么? 校验和?字节比较?认为文件不会大于 100-200 MB
what's the most elegant way to check to files for equality in Python?
Checksum? Bytes comparing? Think files wont' be larger than 100-200 MB
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
filecmp
模块怎么样?它可以通过多种不同的方式进行文件比较,并进行不同的权衡。更好的是,它是标准库的一部分:
http://docs.python.org/library /filecmp.html
What about
filecmp
module? It can do file comparison in many different ways with different tradeoffs.And even better, it is part of the standard library:
http://docs.python.org/library/filecmp.html
使用hashlib获取每个文件的md5,并比较结果。
更新:从 Python 2.1 开始,有一个 filecmp 模块做你想要的,并且也有比较目录的方法。 我从来不知道这个模块,我自己仍在学习 Python :-)
use hashlib to get the md5 of each file, and compare the results.
Update: As of Python 2.1 there is a filecmp module that does just what you want, and has methods to compare directories too. I never knew about this module, I'm still learning Python myself :-)
好吧,这可能需要两个单独的答案。
如果您有许多文件要比较,请查找校验和并缓存每个文件的校验和。可以肯定的是,之后逐字节比较匹配的文件。
如果您只有两个文件,请直接进行字节比较,因为无论如何您都必须读取文件来计算校验和。
在这两种情况下,都使用文件大小作为检查不平等的早期方法。
Ok, this might need two separate answers.
If you have many files to compare, go for the checksum and cache the checksum for each file. To be sure, compare matching files byte for byte afterwards.
If you have only two files, go directly for byte comparison because you have to read the file anyway to compute the checksum.
In both cases, use the file size as an early way of checking for inequality.
在尝试任何其他解决方案之前,您可能需要对这两个文件执行 os.path.getsize(...) 操作。
如果不同,则无需比较字节或计算校验和。
当然,这只有在文件大小不固定的情况下才有用。
例子:
Before attempting any of the other solutions, you might want to do
os.path.getsize(...)
on both files.If that differs, there is no need to compare bytes or calculate checksum.
Of course, this only helps if the filesize isn't fixed.
Example:
我会使用 MD5(例如)进行校验和,而不是字节比较加上日期检查,并取决于您需要的名称检查。
I would do checksum with MD5 (for example) instead of byte comaprasion plus the date check and depend on you needs name check.
去
cmp
怎么样?What about shelling out to
cmp
?