Python如何避免嵌套简化文件匹配删除场景的实现代码?
Python代码优化简化方案
优化核心方向
- 移除无意义的嵌套缩进,用卫语句提前跳过不符合条件的文件,降低代码阅读成本
- 补全缺失的依赖导入、异常处理逻辑,避免运行时报错
- 修正路径硬编码问题,适配跨操作系统和子目录遍历场景
- 拆分独立逻辑块,后续调整规则时修改成本更低
优化后完整代码
import os import fnmatch TARGET_FOLDER = "folder" FILE_PATTERN = "pattern" for root, _, files in os.walk(TARGET_FOLDER): for old_file in files: # 不匹配文件名规则直接跳过 if not fnmatch.fnmatch(old_file, FILE_PATTERN): continue # 拆分文件名,不符合格式直接跳过 try: spl = old_file.rsplit('_') seg6 = int(spl[6]) * 2 seg7 = int(spl[7]) * 2 except (IndexError, ValueError): continue # 拼接新文件路径判断是否存在 new_file_path = os.path.join(TARGET_FOLDER, f"xxx_{seg6}_{seg7}_yyy.txt") if os.path.isfile(new_file_path): continue # 满足删除条件,执行删除 old_file_path = os.path.join(root, old_file) os.remove(old_file_path)
可选简化场景
如果你不需要遍历子目录,只需要处理目标文件夹的一级文件,还可以进一步简化掉os.walk的嵌套:
import os import fnmatch TARGET_FOLDER = "folder" FILE_PATTERN = "pattern" for old_file in os.listdir(TARGET_FOLDER): old_file_path = os.path.join(TARGET_FOLDER, old_file) if not os.path.isfile(old_file_path) or not fnmatch.fnmatch(old_file, FILE_PATTERN): continue try: spl = old_file.rsplit('_') new_file_path = os.path.join(TARGET_FOLDER, f"xxx_{int(spl[6])*2}_{int(spl[7])*2}_yyy.txt") except (IndexError, ValueError): continue if not os.path.isfile(new_file_path): os.remove(old_file_path)
内容的提问来源于stack exchange,提问作者user1298426
相关产品推荐
相关产品推荐

