使用 Windows 7,我有两个文件夹,一个是我处理文件的“Master”文件夹,另一个是 NAS4Free 服务器上的“Backup”文件夹。
我有超过 800 个 jpg 文件,总计 2.6GB,大小从 124KB 到 16MB 不等。
我经常“交换”文件名,即:
rename 01-020.jpg 99-020.jpg
rename 01-040.jpg 01-020.jpg
rename 99-020.jpg 01-040.jpg
我还添加新文件 - 01-030.jpg - 然后重新编号该集,即:
rename 01-020.jpg 99-020.jpg
rename 01-030.jpg 99-040.jpg
rename 01-040.jpg 99-060.jpg
rename 99-020.jpg 01-020.jpg
rename 99-040.jpg 01-040.jpg
rename 99-060.jpg 01-060.jpg
为了保持主文件夹和备份文件夹同步,我首先考虑对整个文件夹进行 XCOPY 或 ROBOCOPY,但这太耗时,特别是因为绝大多数文件都没有更改。
我正在尝试提出一个 Python 3 解决方案。我已阅读有关 filecmp.cmp() 的文档。让我担心的是以下声明:
“……如果他们seem平等……”(强调我的)。
指定shallow=False 似乎有点矫枉过正,导致filecmp 比较1,600 多个文件的内容,而绝大多数比较都匹配。
指定shallow=True 会导致filecmp 使用os.stat() 函数。使用该函数在 filecmp 返回 True 的两个文件上运行测试,stat 返回的一些值是相同的,其他值是不同的。显然,filecmp 不会使用 stat 返回的所有值来确定文件是否相等。
所以,我的问题是:在什么“现实世界”情况下 filecmp.cmp(file1, file2,shallow=True) 会返回误报或漏报?我可以相信它吗?
并且,一个可能的“子问题”是,filecmp.cmp() 使用 os.stat() 返回的哪些特定值?
(如果您好奇我对这些文件做了什么,我在这里讨论:)