我们在仿真时,仿真器,比如VCS,会根据文件日期有没有更新,来递增式编译。如果我们总是把testcase或者include文件覆盖过来,就会导致不必要的重编译。因为copy文件时,即使文件内容相同,文件日期也会更新。
那么我们需要对比两个文件内容是否相同,来决定要不要copy文件。在Linux里有命令diff -q file1 file2
可以输出文件是否相同。但是在python里怎么实现呢?
有一种方法就是计算文件的摘要,比如md5、SHA1、SHA256等。由于md5算法简单、计算速度快,因此我们用md5来实现。
md5是基于字符串的二进制形式进行计算。所以我们需要先读出文件,拼接成字符串。
分别计算两个文件的md5,返回True或False。
先判断文件大小,如果大小不一致,两个文件肯定不一样。
对于大文件可以分成几段,分次计算md5。一旦md5不相同,后面的就不再需要计算。