#删除文件的文件夹属性需要取消 只读 模式
以下代码遍历文件夹A及其子目录,遍历文件夹B及其子目录,将文件夹A中与文件夹B中文件名称相同的文件删除。
适用场景:文件筛选、存储空间清理
import os
# root : 当前目录路径 (字符串)
# dirs : 当前目录下的子目录列表 (列表)
# files : 当前目录下的文件列表 (列表)
def delete_matching_files_by_name(dir_a, dir_b):
# 遍历dir_a中的文件和文件夹
for root_a, dirs_a, files_a in os.walk(dir_a):
# 遍历dir_a中的文件
for file_a in files_a:
file_path_a = os.path.join(root_a, file_a)
for root_b, dirs_b, files_b in os.walk(dir_b):
for file_b in files_b:
# 构造B文件夹下文件的完整路径
file_path_b = os.path.join(root_b, file_b)
# 检查两个文件是否同名
if file_a == file_b:
try:
# 删除A目录下的文件
os.remove(file_path_a)
print(f"Deleted file: {file_path_a}")
except OSError as e:
print(f"Error deleting file {file_path_a}: {e.strerror}")
# 找到同名文件后,退出内层循环,继续检查dir_a中的下一个文件
break
# 如果在dir_b中找到了同名文件并删除,跳出外层循环,继续检查下一个文件
else:
continue
break # 如果在dir_a的当前层级找到了同名文件并删除,跳出内层循环
dir_a = r"C:\test.1"
dir_b = r"F:\test.2"
delete_matching_files_by_name(dir_a, dir_b)