多层文件夹下文件名字改成统一命名

本文介绍了一种使用Python脚本的方法,解决在多层文件夹结构中,由于文件重名导致的文件命名混乱问题,通过遍历并重命名jpg和xml文件,使得它们一一对应且整齐排列。
摘要由CSDN通过智能技术生成

多层文件夹下文件名字改成统一命名
在对原始数据集标注的时候,标注是好好的,但是先看一下文件结构:
–data(一级目录)
----CV3(二级目录)
--------front(三级目录)
--------left
--------rear
--------right
----CV5
--------front
--------left
--------rear
--------right

实际上文件都是分布在各个子文件夹中,而且子文件中的文件可能会和其他子文件中的文件重名,简单的把他们复制到一个地方时候不好使。
提出需求:
将每个文件中提取出来,将原来的jpg和对应的xml文件重新命名,而且重型命名后的文件也是一 一对应的,如果jpg文件没有对应的xml文件,直接将他们复制到对应文件中进行改名字就可以。

解决:

import os
import shutil

i = 1
# 设置原始文件夹和目标文件夹的路径
source_folder = "C:\\Users\\Administrator\\Desktop\\data"
target_folder = "C:\\Users\\Administrator\\Desktop\\target_data"

# 遍历所有子文件夹
for root, dirs, files in os.walk(source_folder):
    # 在每个文件夹中寻找匹配的 JPG 和 XML 文件
    for file in files:
        if file.endswith(".jpg"):
            # 如果找到 JPG 文件,则查找相应的 XML 文件
            basename = os.path.splitext(file)[0]
            xml_file = os.path.join(root, basename + ".xml")
            if os.path.exists(xml_file):
                # 如果找到匹配的 XML 文件,则重命名并移动两个文件
                new_name = str(i)
                new_jpg = os.path.join(target_folder, new_name + ".jpg")
                new_xml = os.path.join(target_folder, new_name + ".xml")
                shutil.move(os.path.join(root, file), new_jpg)
                shutil.move(xml_file, new_xml)
                i += 1
            else:
                # 如果没有匹配的 XML 文件,则只移动 JPG 文件
                new_name = str(i)
                new_jpg = os.path.join(target_folder, new_name + ".jpg")
                shutil.move(os.path.join(root, file), new_jpg)
                i += 1

结果就是在target_data下重新整理了所有杂乱的文件。
目标文件文件应该已经存在,否则报错。
原文件不存在,在执行操作前请备份一份,以免出现错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值