python文件批量重命名

正文

批量顺序重命名:按原本文件的排列循序重命名,只改变文件名称,不改变前后文件的位置关系
感谢评论区提醒:os.listdir并不是按照文件夹里的默认顺序提取的,,,所以第一段代码其实就相当于乱序了。
此代码之前用于深度学习数据集的处理上,图片和标签在两个文件夹下是一一对应的(同名的图片与标签只是后缀不同,如test1.jpg、test1.xml),用此脚本分别对两个文件夹进行批量重命名,得到的图片和标签还是一一对应的。
PS:若想不改变前后文件的位置关系此代码不可行

# 导入os包
import os

def file_rename(path, begin_num):
    """
    @param path: 文件夹路径
    @param begin_num: 起始命名数字
    """
    # 设定文件路径
    i = begin_num
    # 对目录下的文件进行遍历
    for file in os.listdir(path):
        # 判断是否是文件
        if os.path.isfile(os.path.join(path, file)) == True:
            # 设置新文件名
            new_name = file.replace(file, "%d.jpg" % i)
            # 重命名
            os.rename(os.path.join(path, file), os.path.join(path, new_name))
            i += 1
    # 结束
    print("End")


if __name__ == '__main__':
    path = './test_model/total1/'
    file_rename(path, 0)

批量乱序重命名:从结果形式上看也是重命名,不仅只改变文件名称,还改变前后文件的位置关系(重命名+Shuffle)

import random
import os

def file_rename_shuffle(path):
    """
    @param path: 文件夹路径
    """
    fileList = os.listdir(path)  # 获得所有文件名列表,可以print(fileList)查看
    Imgnum = len(fileList)
    print(Imgnum)
    i = 0
    L = random.sample(range(0, Imgnum), Imgnum)
    print(L)
    filetype = ".jpg"  # 文件类型
    for filename in fileList:
        print(filename)
        portion = os.path.splitext(filename)  # 将文件名拆成名字和后缀
        if portion[1] == filetype:  # 检查文件的后缀
            newname = str(L[i]) + filetype
            print(newname)
            os.rename(path+filename, path+newname)  # 修改名称
            i += 1
            
if __name__ == '__main__':
    path = './test_model/test/' 
    file_rename_shuffle(path)

使用心得

批量顺序重命名应用广泛;
批量乱序重命名多用于将两堆分类好的数据打乱;

如果阅读本文对你有用,欢迎关注点赞评论收藏呀!!!
2021年3月13日17:09:58
修改时间:
2023年4月14日09:47:12
在这里插入图片描述

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值