基于文件名日期删除文件:保留周一文件的脚本出错求助
问题排查与修复
错误原因
- 类型不匹配:
directory.glob()返回的是Path对象,你直接拿它和字符串'data_Mon_*.csv'做相等判断,两者永远不可能相等,所以所有文件都会被判定为需要删除。 - 通配符使用错误:就算把
file转成字符串,直接用!= 'data_Mon_*.csv'也不是通配符匹配逻辑,*在这里只是普通字符,没法匹配所有周一的文件名。
修复后的代码
方案一(用pathlib批量匹配周一文件):
import pathlib import os def file_delete(): directory = pathlib.Path('/Path/To/Data') # 先获取所有周一的文件路径,存入集合方便快速判断 mon_files = set(directory.glob('data_Mon_*.csv')) for file in directory.glob('data_*.csv'): if file not in mon_files: os.remove(file)
方案二(直接判断文件名前缀):
import pathlib import os def file_delete(): directory = pathlib.Path('/Path/To/Data') for file in directory.glob('data_*.csv'): # 提取文件名,判断是否以周一标识开头 if not file.name.startswith('data_Mon_'): os.remove(file)
内容的提问来源于stack exchange,提问作者Archelrex
相关产品推荐
相关产品推荐

