如何用Python按指定顺序处理命名为Im_260x_y的JPG图像文件
Python 实现指定顺序处理图像代码
实现思路
- 先给指定排序的y值生成优先级映射,确保同x下的文件能按要求的y顺序排列
- 用正则匹配筛选符合命名规则的JPG文件,解析文件名中的x、y值
- 以(x升序,y对应优先级升序)为排序键对文件列表排序
- 遍历排序后的列表执行自定义处理逻辑
完整代码
import os import re # 定义y的指定排序顺序,可根据需求调整 Y_ORDER = [0, 1, 4, 8, 16, 32, 64, 128, 258] # 生成y值到排序权重的映射 y_weight_map = {y_val: idx for idx, y_val in enumerate(Y_ORDER)} # 替换为你实际的图像存放目录路径 IMG_DIR = "./your_image_directory" # 文件名匹配正则,后缀如果是小写jpg可修改为jpg,或加re.IGNORECASE忽略大小写 FILE_PATTERN = r"^Im_260(\d+)_(\d+)\.JPG$" if __name__ == "__main__": # 收集所有符合规则的文件信息 valid_file_list = [] for file_name in os.listdir(IMG_DIR): match_res = re.match(FILE_PATTERN, file_name) if not match_res: continue # 解析x、y值 x_val = int(match_res.group(1)) y_val = int(match_res.group(2)) # 校验x、y的合法范围,过滤无效文件 if 1 <= x_val <= 67 and y_val in y_weight_map: valid_file_list.append((file_name, x_val, y_val)) # 按要求排序:先按x升序,同x按y的指定顺序升序 valid_file_list.sort(key=lambda item: (item[1], y_weight_map[item[2]])) # 遍历处理文件 for file_info in valid_file_list: file_name, x, y = file_info full_file_path = os.path.join(IMG_DIR, file_name) # -------------------------- # 这里写你自己的文件处理逻辑 # -------------------------- print(f"处理文件:{file_name} | x={x} | y={y}")
注意事项
- 若文件后缀为小写
.jpg,可修改正则中的JPG为jpg,或者将re.match(FILE_PATTERN, file_name)改为re.match(FILE_PATTERN, file_name, re.IGNORECASE)忽略大小写 - 代码会自动跳过不符合命名规则、x或y不在指定范围的文件,避免异常
- 只需修改
IMG_DIR为你的实际目录,再替换处理逻辑部分的代码即可使用
内容的提问来源于stack exchange,提问作者Farah
相关产品推荐
相关产品推荐

