如何批量重命名文件夹内的文件,实现img1.jpg改为1.jpg的效果?
解决方法
原有代码存在两处核心问题:
- 仅生成了调整后的文件名写入本地文件,没有调用系统重命名接口修改实际文件
- 文件名处理逻辑不匹配需求:仅能替换
img_前缀,无法匹配你举例的img1.jpg里的img前缀,同时多余的split('jpeg')逻辑无实际作用可以删除
修改后的可直接运行代码如下:
import os DIRECTORY = '/img/11/' for img_filename in os.listdir(DIRECTORY): # 跳过子目录,只处理文件 if not os.path.isfile(os.path.join(DIRECTORY, img_filename)): continue # 分离文件名主体和后缀 name_part, ext_part = os.path.splitext(img_filename) # 仅匹配开头的img前缀,避免文件名中间包含img被误修改 if name_part.startswith('img'): new_name = name_part.removeprefix('img') + ext_part # 拼接完整的新旧文件路径 old_full_path = os.path.join(DIRECTORY, img_filename) new_full_path = os.path.join(DIRECTORY, new_name) # 执行重命名 os.rename(old_full_path, new_full_path)
补充注意点:
- 运行前建议先注释掉
os.rename那行,新增一行print(f"预览修改:{old_full_path} -> {new_full_path}"),确认所有文件的修改结果符合预期后,再取消注释执行实际重命名,避免误改文件 - 如果你的实际文件名前缀是带下划线的
img_,把removeprefix('img')改成removeprefix('img_')即可;如果使用Python3.9以下版本,可替换为切片写法name_part[3:](img_前缀对应切片name_part[4:]) - 如果需要只处理特定格式的图片,可以新增后缀判断逻辑,比如在分离后缀后加一行
if ext_part.lower() not in ('.jpg', '.jpeg', '.png', '.webp'): continue,过滤掉非图片文件
内容的提问来源于stack exchange,提问作者Lei
相关产品推荐
相关产品推荐

