CRC计算忽略文件名(Python 3.5)

时间:2016-08-21 10:21:18

标签: python-3.x crc

我希望能够计算文件的CRC,以便能够检查文件在将来的任何时间点是否发生了变化(例如第1天:filename.txt = A,第2天filename.txt = B - >文件已更改。)

如果可能的话(这就是我被困住的地方)我希望能够在不考虑文件名的情况下计算文件的CRC,以便能够识别文件名更改(例如第1天:文件名.txt具有CRC值X,第2天:newFileName.txt具有CRC值X - >相同文件,新文件名。)

我考虑了一种解决方法,即在检查CRC之前将文件名更改为标准值,但我想知道是否有更简单的方法来执行此操作。

1 个答案:

答案 0 :(得分:1)

我不打算为你编写代码。 不过,你能做什么:

  1. 创建字典key = filename,value = MD5 / SHA1,dict1
  2. 创建字典键= MD5 / SHA1,值=文件名,说dict2
  3. 腌制它们,然后接下来检查比较两个版本的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系统来检查文件是否已更改。我对此并不了解,但它可以在没有你编码的情况下为你的目的服务。