如何用Python删除列表中匹配的多个文件?现有代码执行失败
解决方法
你的代码问题在于没有把文件路径和文件名拼接起来,程序默认在当前运行目录查找文件,而非你指定的D://photo目录,所以找不到目标文件导致删除失败。
修复后的代码
import os path = "D://photo" list1 = ['photo-1777.jpg', 'photo-4277.jpg', 'photo-620.jpg', 'photo-1078.jpg'] for filename in list1: # 拼接完整文件路径 full_path = os.path.join(path, filename) if os.path.exists(full_path): os.remove(full_path) print(f"已删除文件: {full_path}") else: print(f"文件不存在: {full_path}")
优化说明
os.path.join()会自动适配不同系统的路径分隔符(比如Windows的\、Linux的/),比手动拼接字符串更稳妥。- 增加打印提示能直观看到操作结果,方便排查哪些文件不存在或已成功删除。
如果你的文件列表特别长,还可以用下面的方式提升效率:
import os path = "D://photo" # 转成集合,成员查找速度远快于列表 target_files = {'photo-1777.jpg', 'photo-4277.jpg', 'photo-620.jpg', 'photo-1078.jpg'} for filename in os.listdir(path): if filename in target_files: full_path = os.path.join(path, filename) os.remove(full_path) print(f"已删除文件: {full_path}")
这种方式直接遍历目标目录里的文件,匹配列表后再删除,避免了逐个检查不存在的文件,长列表场景下效率更高。
内容的提问来源于stack exchange,提问作者kali
相关产品推荐
相关产品推荐

