import os, zipfile filenamein = 'jython-complete.jar' zipin = zipfile.ZipFile(filenamein, 'r') filelist = zipin.infolist() uniquefiles = {} duplicates = [] for f in filelist: if f.filename not in uniquefiles: uniquefiles[f.filename] = f else: duplicates.append(f) if duplicates: print '%d duplicates have been found in %s' % (len(duplicates), filenamein) print "\n".join([f.filename for f in duplicates]) filenameout = "-unique".join(os.path.splitext(filenamein)) print 'Creating unique archive %s...' % filenameout zipout = zipfile.ZipFile(filenameout, 'w') writtenfiles = {} for f in filelist: if f.filename not in writtenfiles: zipout.writestr(f, zipin.read(f.filename)) writtenfiles[f.filename] = f zipout.close() else: print 'No duplicates have been found in ' % filenamein zipin.close()