我使用 Python 的 PyDrive2 包下载了 Google Drive 的所有内容,并对本地驱动器中的文件和 Google Drive 上的内容进行了比较,发现其中一些文件的 md5 哈希值不同。本地驱动器上的所有文件均未发生过更改,但...
从我的本地驱动器...
"Pay Stubs/Wendy's/01-11-2022.pdf": {
"size": 3872,
"checksum": "1891f224f046ef7ff05b9dc69e275155"
},
来自 Google Drive...
"Pay Stubs/Wendy's/01-11-2022.pdf": {
"size": 3872,
"checksum": "60e94f02230b42d5288878550f01f315"
},
我已经使用 fsspec 下载了文件的字节内容,并在本地生成了 md5 哈希,并且该哈希就是它应该的样子。
# GoogleDrive inherits pydrive2.fs.GDriveFileSystem https://docs.iterative.ai/PyDrive2/fsspec/
# pydrive2.fs.GDriveFileSystem inherits fsspec.AbstractFileSystem
# https://filesystem-spec.readthedocs.io/en/latest/api.html#fsspec.spec.AbstractFileSystem
Drive = GoogleDrive()
print(Drive.info(path = 'root/Pay Stubs/Wendy\'s/01-11-2022.pdf'))
with Drive.open(path = 'root/Pay Stubs/Wendy\'s/01-11-2022.pdf', mode = 'rb') as rfile:
print(hashlib.md5(string = rfile.read(), usedforsecurity = True).hexdigest())
{'name': "root/Pay Stubs/Wendy's/01-11-2022.pdf", 'type': 'file', 'size': 3872, 'checksum': '60e94f02230b42d5288878550f01f315'}
60e94f02230b42d5288878550f01f315
无论如何,我的问题是,下载文件后,Windows 可能会对文件的字节内容进行哪些更改,从而导致最终得到不同的 MD5 哈希值?
很难确定根本原因,但有几种可能性:
替代数据流 (ADS):Windows 允许文件具有与其关联的其他数据流,例如跟踪文件的来源。这通常是用户在下载文件时无法看到的内容。
防病毒软件:在文件扫描期间,您的防病毒软件可能会对文件进行修改。
(第一种和第二种情况都是元数据潜入文件的症状)
说实话,如果您对这些设备非常好奇,您可以从技术上对这两个文件进行逐字节的比较,但我并不确定如何使用 Google Drive 来做到这一点。