我有一个 zip 文件和一个目录。如果 zip 文件中包含的文件在目录中不存在或它们不同(不是二进制相等),则应将它们复制到目录中。所以有以下两种情况。
- 来自 zip 的文件不包含在目录中
- 该目录已经包含一个与目录中的文件同名的文件
在第一种情况下,我只是将文件直接提取到目录中(没有故意保留 zip 的目录结构)。
在第二种情况下,我将文件从 zip 解压缩到临时目录,并将它们与以下代码进行比较
extracted_member = os.path.join(TMP_DIR, os.path.basename(zip_member))
with zipfile.open(zip_member) as member_file, open(extracted_member, 'wb') as target_file:
shutil.copyfileobj(member_file, target_file)
print(filecmp.cmp(extracted_member, file_from_dir, False))
因此,如果我在两次执行之间不做任何事情而运行程序两次,我会遇到案例 2(如预期的那样)。文件比较此时应该返回 true (至少在我的理解中),但由于某种原因,结果print(...)
总是给我False
.
有人知道我在这里做错了什么还是我对情况有错误的理解?