如何用Python删除文件夹中除指定文件名列表外的所有文件
批量删除非保留文件实现方案
glob()的入参填写目标文件夹路径 + 文件名匹配规则即可,你需要匹配所有符合数字_ABC命名规则的文件,直接用通配符*代替前缀可变的数字部分,传入目标文件夹路径/*_ABC就能精准匹配到所有目标文件,避免误删文件夹内其他无关文件。
完整实现代码如下:
import glob import os def delete_unmatched_files(target_dir: str, keep_filenames: list): # 拼接匹配规则,仅匹配符合你命名规则的文件 match_pattern = os.path.join(target_dir, "*_ABC") for file_path in glob.glob(match_pattern): # 从完整路径中提取纯文件名 base_name = os.path.basename(file_path) # 不在保留列表则执行删除 if base_name not in keep_filenames: os.remove(file_path) # 调用示例 if __name__ == "__main__": # 替换为你实际的目标文件夹路径 TARGET_FOLDER = "/path/to/your/target/folder" # 你的待保留文件名列表 KEEP_LIST = ['65_ABC', '90_ABC'] delete_unmatched_files(TARGET_FOLDER, KEEP_LIST)
- 第一次运行前建议先把
os.remove(file_path)替换为print(f"待删除:{base_name}"),先打印确认待删除列表符合预期,再执行实际删除操作,避免误删 - 如果文件名带后缀(比如
.txt/.png),把匹配规则改成*_ABC.*即可适配 - 需要处理多个目标文件夹时,循环调用函数传入不同的目标路径即可
内容的提问来源于stack exchange,提问作者Haidepzai
相关产品推荐
相关产品推荐

