我正在尝试编写一个 Python 脚本,它将获取目录中所有文件的 md5sum(在 Linux 中)。我相信我在下面的代码中已经完成了。
我希望能够运行它以确保目录中没有文件已更改,并且没有添加任何文件以进行删除。
问题是如果我对目录中的文件进行了更改,然后又将其更改回来。我从运行下面的函数得到不同的结果。(即使我将修改后的文件改回来。
谁能解释一下。如果你能想出一个变通办法,请告诉我?
def get_dir_md5(dir_path):
"""Build a tar file of the directory and return its md5 sum"""
temp_tar_path = 'tests.tar'
t = tarfile.TarFile(temp_tar_path,mode='w')
t.add(dir_path)
t.close()
m = hashlib.md5()
m.update(open(temp_tar_path,'rb').read())
ret_str = m.hexdigest()
#delete tar file
os.remove(temp_tar_path)
return ret_str
编辑: 正如这些好人已经回答的那样,看起来 tar 包含标题信息,例如修改日期。使用 zip 会以不同的方式或其他格式工作吗?
还有其他解决方法的想法吗?