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

如何简洁地检查文件名后缀是否匹配多个选项?

简化文件后缀判断的几种方法

方法1:利用str.endswith()支持元组参数的特性(最优解)

Python的str.endswith()方法本身就支持传入字符串元组,用来匹配多个后缀。同时可以将文件名转为小写,避免重复写大小写两种后缀:

# 定义所有图片后缀的小写集合
image_extensions = ('.jpg', '.jpeg', '.heic', '.png', '.avif')
# 转小写后判断是否匹配任意后缀
if file.name.lower().endswith(image_extensions):
    # 执行分类逻辑
    pass

这个方法最简洁高效,因为endswith是Python内置的优化方法,性能比手动用any()遍历更好。

方法2:保留大小写后缀的元组写法

如果不想转换文件名大小写,也可以把所有大小写后缀放进元组直接传入:

image_extensions = ('.jpg', '.JPG', '.jpeg', '.JPEG', '.heic', '.HEIC', '.png', '.PNG', '.avif', '.AVIF')
if file.name.endswith(image_extensions):
    # 执行分类逻辑
    pass

方法3:用any()生成器表达式(备选方案)

你之前尝试的any()其实也可以实现,只需要调整写法——让生成器里的每个元素都是file.name.endswith(ext)的布尔值,any()会遍历判断是否有任意一个为True:

image_extensions = ['.jpg', '.jpeg', '.heic', '.png', '.avif']
if any(file.name.lower().endswith(ext) for ext in image_extensions):
    # 执行分类逻辑
    pass

不过这个方法的性能略逊于直接用endswith()的元组参数,因为需要手动遍历每个后缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:57:20