我想使用 python 在两个不同的 zip 文件中比较两个具有相同名称和相同相对路径的文本文件。
我一直在尝试搜索各种方法,但发现在我的案例中没有一个可用的顶级解决方案。
我的代码:
from zipfile import ZipFile
from pathlib import Path
with ZipFile(zip_path1) as z1, ZipFile(zip_path2) as z2:
file1_paths = [Path(filepath) for filepath in z1.namelist()]
file12_paths = [Path(filepath) for filepath in z12.namelist()]
cmn = list(set(file1_paths ).intersection(set(file12_paths )))
common_files = [filepath for filepath in cmn if str(filepath).endswith(('.txt', '.sh'))]
for f in common_files:
with z1.open(f, 'r') as f1, z2.open(f, 'r') as f2:
if f1.read() != f2.read(): # Also used io.TextIOWrapper(f1).read() here
print('Difference found for {filepath}'.format(filepath=str(f))
笔记:
我在这里使用了 pathlib 作为路径。如果with z1.open(f, 'r')...
我使用 pathlib 路径而不是对路径进行硬编码,我将得到<class 'KeyError'>: "There is no item named WindowsPath('SomeFolder/somefile.txt') in the archive"
.
此外,即使我对路径进行硬编码,用于比较的文件读取缓冲区也总是空的。因此,在这种情况下,比较实际上不起作用。
我被困在这个奇怪的案例中,非常感谢任何帮助。