You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取文本后缀列表批量删除Web服务器指定分辨率媒体文件

问题原因

当前代码无法运行的核心错误为:你在if file.endswith(str(lines))行将整个后缀列表强制转为字符串后进行匹配,相当于要匹配"['-150x150.jpg', '-100x100.jpg']"这类列表字面量字符串,永远不可能命中目标文件。

修复方案

Python内置的str.endswith()方法原生支持传入元组类型的后缀集合,只要文件名匹配元组中任意一个后缀就会返回True,只需修改对应判断逻辑即可:

import os

dir_name = "path"
# 过滤掉目录,只处理文件避免误删文件夹
folder = [f for f in os.listdir(dir_name) if os.path.isfile(os.path.join(dir_name, f))]

with open('list.txt', encoding='utf-8') as f:
    # 过滤空行,避免空后缀匹配所有文件
    suffix_list = [line.strip() for line in f.read().splitlines() if line.strip()]
# 转成元组供endswith方法使用
suffix_tuple = tuple(suffix_list)

for file in folder:
    if file.endswith(suffix_tuple):
        # 调试阶段建议先打印待删除文件,确认匹配逻辑无误后再取消注释删除行
        print(f"待删除文件:{file}")
        # os.remove(os.path.join(dir_name, file))

配套配置要求

你的list.txt每一行对应一个需要匹配的后缀,无需额外符号,示例内容如下:

-150x150.jpg
-100x100.jpg
-75x75.jpeg
-50x50.png
-200x200.webp

额外优化建议

如果衍生文件的分辨率规则固定为数字x数字格式,你甚至可以不用维护后缀列表,直接用正则匹配所有符合规则的文件:

import re
# 匹配任意分辨率后缀的图片,不区分扩展名大小写
pattern = re.compile(r'-\d+x\d+\.(jpg|jpeg|png|webp)$', re.I)
for file in folder:
    if pattern.search(file):
        print(f"待删除文件:{file}")
        # os.remove(os.path.join(dir_name, file))

内容的提问来源于stack exchange,提问作者anu_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:57:01