def main(): for item in File.raw( "select sha256sum, count(id) total from file where sha256sum is not null and is_del = False group by sha256sum having total >= 2" ): sha256sum = item.sha256sum files = [ file_obj for file_obj in File.filter(sha256sum=sha256sum, is_del=False) ] while len(files) >= 2: print(f"{files[0]} VS {files[1]}") keep_file, delete_file = keep_and_delete(files[0], files[1], rules) print(f" delete: {delete_file.path}") print(f" keep: {keep_file.path}") delete_file.is_del = True delete_file.save() os.unlink(delete_file.path) files.remove(delete_file)