如何根据指定post_id输出对应命名规则的图片文件?
解决方案
可以通过两种方式实现只筛选以指定post_id开头的图片文件:
方法一:直接通过glob精准匹配(推荐)
利用glob的通配符特性,直接构造匹配规则,避免遍历所有文件后再筛选,效率更高:
import glob def jpg(): post_id = 69 text = "Hello World" # 构造匹配模式:匹配photo文件夹下以post_id开头的jpg文件 pics = glob.glob(f'photo//{post_id}_*.jpg') # 若需要兼容不带下划线的情况(比如69.jpg),可修改为: # pics = glob.glob(f'photo//{post_id}*.jpg') # 直接拼接列表,无需循环逐个追加 photo = ','.join(pics) print(photo, text) jpg()
方法二:遍历后筛选文件名
如果需要更灵活的判断逻辑,可先获取所有jpg文件,再筛选符合条件的文件:
import glob import os def jpg(): post_id = 69 text = "Hello World" post_id_str = str(post_id) pics = glob.glob(f'photo//*.jpg') # 筛选文件名以post_id字符串开头的文件 filtered_pics = [pi for pi in pics if os.path.basename(pi).startswith(post_id_str)] photo = ','.join(filtered_pics) print(photo, text) jpg()
关键说明:
- 方法一通过
glob通配符直接匹配,减少不必要的文件遍历,适合简单匹配场景; - 方法二借助
os.path.basename提取文件名,再用startswith判断,适合需要额外逻辑处理的场景; - 注意要将
post_id转为字符串,避免数字与字符串匹配的类型问题。
内容的提问来源于stack exchange,提问作者Александр Белых
相关产品推荐
相关产品推荐

