Python使用glob读取图片序列(.jpg/.tiff/.png)顺序异常求助
解决glob读取带数字后缀图片时顺序混乱的问题
你的问题出在glob默认按字典序返回文件列表,而非数字大小的自然顺序,因此会出现1、10、2、3这类不符合预期的排序结果。
下面是两种可行的解决方法:
方法1:提取文件名中的数字自定义排序
通过正则提取文件名里的数字,以此为依据排序,无需额外安装第三方库:
import glob import re # 获取所有目标图片文件 files = glob.glob('images/scratch_assay/*[0-9].*') # 以文件名中的数字作为排序键 files.sort(key=lambda x: int(re.search(r'(\d+)', x).group())) # 按预期顺序遍历输出 for file in files: print(file)
方法2:使用natsort库实现自然排序
如果环境允许安装第三方库,natsort可以更简洁地处理自然排序场景:
首先安装库:
pip install natsort
然后修改代码:
import glob from natsort import natsorted # 直接通过natsorted实现自然排序 files = natsorted(glob.glob('images/scratch_assay/*[0-9].*')) for file in files: print(file)
内容的提问来源于stack exchange,提问作者Manvith Penklagar
相关产品推荐
相关产品推荐

