Python批量修改图片名

Python修改图片名

简单的方法

import os

PicPath = r'F:\Files/'
fileList = os.listdir(PicPath)

n = 0
for i in fileList:
    # 设置旧文件名(就是路径+文件名)
    oldname = PicPath + os.sep + fileList[n]  # os.sep添加系统分隔符

    # 设置新文件名
    newname = PicPath + os.sep + str(n + 1) + '.jpg'

    os.rename(oldname, newname)  # 用os模块中的rename方法对文件改名
    print(oldname, '======>', newname)

    n += 1

上面的方法只能是修改单个文件夹下的图片名

万能点的方法

Note:这个方法来自此博主 python3 批量重命名图片为定长0000xxx.xxx的python脚本
在此基础

import os
import random

def get_files(path):
    for path, dir_list, file_list in os.walk(path):
        for dir_name in dir_list:
            random_rename_imgs(os.path.join(path,dir_name), bias=-1, fix_len=5)
            
# Img_dir 为图片数据集所在的路径
# bias 为最终的偏置量,'-1'表示将图片的名称变短一个字符
# 假设原来的图片的名称为 00001234.jpeg
# 传入 bias = 1 会让图片前面增加一个0,同时是随机处理的
# 传入 bias = -1 会让图片前面减少一个0,同时名字也会随机处理
# 默认通过增加一位数据的长度来避免冲突
# 当然也可以通过调用两次分别对bias传参为+1和-1来进行处理
# 当 fix_len 被指定的时候,bias参数失效
# fix_len 为对只指定的文件名的.之前的数字的个数
# 例如,设置fix_len的值为8,可以设置数值的长度为8
# 最终得到的图片的命名应该类似 12345678.jpg
def random_rename_imgs(Img_dir, bias=1, fix_len=-1):
    file_name_list = os.listdir(Img_dir)
    random.shuffle(file_name_list)
    # 计算不是xml的文件,得到所有的图片数据数量counter
    counter = 0
    for filename in file_name_list:
        # 找打文件的最后一个点下标
        find_index = filename.rfind('.')
        # 如果能够找到这个点,说明是有效格式文件
        if find_index != -1:
            # 仅对指定的图片文件做相应操作
            # 从最后一个'.'处将文件名切割含有三个部分得list
            file_suffix = filename.rpartition(".")[-1]
            valid_file_suffixes = ['jpg', 'bmp', 'png', 'gif', 'tiff', 'raw', 'jpeg']
            file_name_is_valid = False
            for valid_suffix in valid_file_suffixes:
                if file_suffix == valid_suffix:
                    file_name_is_valid = True
                # 如果是复合要求得文件类型
            if file_name_is_valid:
                print("filename=", filename, end="\n")
                counter = counter + 1
                # 重命名为+1个零,防止重命名冲突
                # 判断是否有设置默认的长度

                # 如果设置了默认的长度,即传入了fix_len > 0
                if fix_len > 0:
                    new_name = str(counter).zfill(fix_len) + "." + file_suffix
                else:
                    new_name = str(counter).zfill(len(filename) - (len(file_suffix) + 1) + bias) + "." + file_suffix
                os.rename(os.path.join(Img_dir, filename), os.path.join(Img_dir, new_name))


if __name__ == "__main__":
    l = r'L:\Net'
    get_files(l)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值