使用os模块和shutil模块,可以比较两个目录并删除不匹配的文件夹或文件。
import os import shutil
a = set(os.listdir('/path/to/dir1')) b = set(os.listdir('/path/to/dir2'))
diff = a.symmetric_difference(b) for file_name in diff: file_path = os.path.join('/path/to/dir1/', file_name) if os.path.isfile(file_path): os.remove(file_path) elif os.path.isdir(file_path): shutil.rmtree(file_path)
在以上代码中,“/path/to/dir1/”代表第一个目录,“/path/to/dir2/”代表第二个目录。将这些路径替换为相应的目录路径。两个目录中所有文件和文件夹的名称存储在两个不同的集合中,并使用symmetric_difference()方法获取存在于任一集合中但不属于两个集合的集合。
遍历这个集合中的所有文件和文件夹,并调用相应的删除方法进行删除。如果文件是文件夹,使用shutil库中的rmtree()方法进行递归删除,如果是文件,则使用os库中的remove()方法进行删除。
这个方法可以比较两个目录中的文件夹和文件,并删除不匹配的项。