Это решение достаточно быстрое. Если бы у вас были огромные каталоги, было бы лучше табличное решение ha sh. Скажем, вы хотите сравнить каталог XML/
и images/
.
import os
def dir_diff(dir1, dir2):
contents1 = sorted( os.listdir(dir1))
contents2 = sorted( os.listdir(dir2))
heads1=[]
heads2=[]
for fname in contents1:
heads1.append(fname[:fname.rfind('.')] )
for fname in contents2:
heads2.append(fname[:fname.rfind('.')] )
i=j=0
out=[]
print(heads2)
print(heads1)
while True:
fname1=heads1[i]
fname2=heads1[j]
if fname1 < fname2:
out.append(contents1[i])
i+=1
elif fname2 < fname1:
out.append(contents2[j])
j+=1
else:
i+=1
j+=1
if i ==len(heads1) and j ==len(heads2):
return out
elif i==len(heads1):
return out+contents2[j:]
elif j==len(heads2):
return out+contents1[i:]
if __name__=='__main__':
folder1 = 'XML/' # NOTE: change these to the folder names you want
folder2 = 'images/' # NOTE: change these to the folder names you want
for fname in dir_diff(folder1, folder2):
os.remove(fname)