我不打算为你写代码。 不过,你可以做什么:
- 创建辞典键=文件名,值= MD5/SHA1什么的,说
dict1
- 创建辞典键= MD5/SHA1,值=文件名,说
dict2
pickle他们,然后下一步检查比较键和dict1两个版本的值:如果差异的值,文件内容已经改变 dict2的相同之处:如果差异的值,文件名已更改,相同的内容。
你不能追查什么,但是文件名+文件内容改变。您将无法查看它是否是删除+新文件或重命名+更改内容。这是限制。
编辑:我在说谎,不写代码。我已经编写了一些示例代码来计算当前模块上的MD5校验和(仅用于演示目的)。
import hashlib
with open(__file__,"rb") as f: # __file__ is full path to current .py file
contents=f.read()
m = hashlib.md5(contents)
print(m.hexdigest())
我得到ebb6e4753cfd7e23dae884a784bc1587
,但结果可能因线路终端的空白行数量变化......
我建议你尝试一下自己,然后重命名/ Python的文件复制到另外一个证明你自己,它不会改变。然后添加评论某处它将改变...祝你好运与你的项目。
编辑2:事后编辑:您可以阅读有关Git配置系统。它使用CRC/MD5系统来检查文件是否更改。我对此不甚了解,但它可能会在您编写任何代码时服务于您的目的。
为什么不使用sha1或md5哈希 – peter
文件的CRC通常不包含文件名。您需要特别努力将文件名包含在CRC计算的数据中。 –
我认为文件名会影响算法的输出(crc/sha1/md5等)。如果只有文件的内容被算法使用,那么具有不同文件名但是像内容的两个文件将产生相同的输出。这种见解很好地解决了我的问题 - 谢谢! – user3535074