1.背景两个文件夹中可能存在同名或不同名的文件,同名的文件也可能有不同的内容。所以需要比较结果输出到Json文件中。2、思路是先获取两个目录,然后遍历目录下的所有文件,将文件名添加到文件列表中,将字符串拼接成新的文件路径,添加到路径列表中。然后分别打开文件,通过计算文件的哈希值比较文件是否相同,先将结果存入字典。因为两个目录下的文件数可能不同,所以需要考虑如果一个目录下的文件数多于另一个目录下的文件数,那么一定是不同的,需要存放在字典分开。最后将字典的内容输出到Json文件中。3.代码importhashlibimportosimportjsondic={}defgetHash(f):"""获取文件哈希值f:file"""line=f.readline()hash=hashlib.md5()while(line):hash。update(line)line=f.readline()returnhash.hexdigest()defIsHashEqual(f1,f2):"""比较hash值是否相同f1:第一个文件f2:第二个文件"""str1=getHash(f1)str2=getHash(f2)returnstr1==str2defCountFiles(path1,path2):"""比较文件"""path_1,path_2=[],[]file_dir1,file_dir2=[],[]#获取path1路径下的所有文件forfileinos.listdir(path1):file_dir1.append(file)#print(file)tmp_path1=path1+str(file)#print(path1)path_1.append(tmp_path1)#getpath2下的所有文件pathforfileinos.listdir(path2):file_dir2.append(file)#print(file)tmp_path2=path2+str(file)#print(path2)path_2.append(tmp_path2)len1,len2=len(path_1),len(path_2)foriinrange(min(len1,len2)):file1=打开(path_1[i],"rb")file2=打开(path_2[i],"rb")res=IsHashEqual(file1,file2)dic[file_dir1[i]]=res#print(dic)#两个路径的文件数不同iflen1
