如何删除后缀为.zip.XXX(XXX取值001-029)的非标准格式文件?
修改代码以删除标准.zip及.zip.XXX(001-029)格式文件
要同时删除标准.zip文件和.zip.XXX(XXX为001至029)格式的文件,你可以选择两种方式修改代码:
方法一:使用正则表达式(简洁高效)
通过正则表达式精准匹配目标文件名,同时保留原有的标准zip文件删除逻辑:
import os import re directory = "你的目标目录路径" files_in_directory = os.listdir(directory) # 过滤条件:标准.zip文件 或 .zip.001至.zip.029的文件 filtered_files = [ file for file in files_in_directory if file.endswith(".zip") or re.match(r'.*\.zip\.(0[01][0-9]|02[0-9])$', file) ] for file in filtered_files: path_to_file = os.path.join(directory, file) os.remove(path_to_file)
正则说明
\.zip\.:匹配文件名中固定的.zip.部分0[01][0-9]:匹配000-019的三位数字,结合02[0-9]覆盖020-029,整体实现001-029的范围匹配$:确保匹配到文件名末尾,避免误匹配包含类似字符串的其他文件
方法二:字符串分割(无需额外模块)
如果不想引入正则模块,可以通过字符串分割和数字范围判断实现:
import os directory = "你的目标目录路径" files_in_directory = os.listdir(directory) filtered_files = [] for file in files_in_directory: # 先处理标准zip文件 if file.endswith(".zip"): filtered_files.append(file) continue # 分割文件名,检查是否符合.zip.XXX格式 filename_parts = file.split('.') # 确保至少有三个部分(例如:xxx.zip.001) if len(filename_parts) >= 3 and filename_parts[-2] == "zip": suffix = filename_parts[-1] # 验证后缀是三位数字且在001-029范围内 if len(suffix) == 3 and suffix.isdigit(): suffix_num = int(suffix) if 1 <= suffix_num <= 29: filtered_files.append(file) for file in filtered_files: path_to_file = os.path.join(directory, file) os.remove(path_to_file)
内容的提问来源于stack exchange,提问作者itIsWhatItIs
相关产品推荐
相关产品推荐

