从不同文件夹中选取名字相同的文件

从不同文件夹中选取名字相同的文件移动到指定文件夹中并重新命名,指定文件按照txt中给出的信息进行读取匹配

import os

rootDir = r"C:\Users\HP\Desktop\sou/"
targetpath = r"C:\Users\HP\Desktop\label-duyin/"
# imgname = 'a.bmp'

i=1
with open(r"C:\Users\HP\Desktop\lading.txt",'r', encoding='utf-8') as f:
        lines=f.readlines()
        for line in lines:
            txt = line.replace('\n','').replace('\r','')
#             print('asdasd')
            #遍历根目录
            for roots,dirs,files in os.walk(rootDir):
                for name in files:
                    if name == f'{txt}.bmp':
            #             print(os.path.join(roots, name))
                        imgPath = os.path.join(roots, name)
            #             print(imgPath)
                        a = name.split('.')[0]   #文件夹名
                        newtargetpath=targetpath + f'{a}/' + str(i).zfill(3) + '.jpg'#zfill()向右对齐,用0补齐
                        print(newtargetpath)
                        shutil.copyfile(imgPath,newtargetpath)
                        i+=1
            i=1
在Matlab,如果你想选取文件夹后面名称相同文件,可以使用文件操作函数和字符串处理函数来实现。以下是一个基本的方法,用于获取具有相同后缀名的所有文件列表: 1. 使用`dir`函数获取文件夹内容。 2. 使用字符串处理函数(如`strcmp`或`regexp`)来筛选出名称后面相同文件。 3. 将筛选出的文件名存储在一个数组或cell数组。 下面是一个简单的示例代码,展示如何实现上述步骤: ```matlab % 设置目标文件夹路径 folderPath = '你的文件夹路径'; % 请替换为实际路径 % 使用dir函数获取文件夹的所有文件信息 files = dir(fullfile(folderPath, '*.ext')); % 请替换*.ext为你的文件扩展名 % 初始化一个cell数组来保存名称相同(排除扩展名)的文件列表 sameNameFiles = {}; % 遍历文件列表,提取文件名(不包括路径和扩展名) for i = 1:length(files) % 获取文件名(不包括路径) fileName = files(i).name; % 分离文件名和扩展名 [baseName, fileExt] = fileparts(fileName); % 检查是否已经保存过相同名字 if isempty(sameNameFiles) || ~strcmp({sameNameFiles{:}}, baseName) % 如果没有,添加到列表 sameNameFiles{end+1} = baseName; else % 如果有,检查是否是相同文件夹下的相同文件 isDuplicate = false; for j = 1:length(sameNameFiles) if strcmp({sameNameFiles{j}}, baseName) isDuplicate = true; break; end end if isDuplicate % 如果是重复的文件名,再检查是否在同一个文件夹下 duplicateFiles = sameNameFiles{j}; % 比较文件夹路径是否一致 if strcmp(files(i).folder, files(duplicateFiles).folder) % 如果路径一致,则说明文件名后面相同提取这些文件 sameNameFiles{j} = [sameNameFiles{j}, {fileName}]; end else % 如果不是重复的文件名,则添加新文件名到列表 sameNameFiles{end+1} = baseName; end end end % 输出具有相同名称(排除扩展名)的文件列表 for i = 1:length(sameNameFiles) fprintf('名称为 %s 的文件有: %s\n', sameNameFiles{i}, sameNameFiles{i}); end ``` 请注意,上面的代码只是一个基本的示例,可能需要根据你的具体需求进行调整。你可以根据文件的具体命名规则进一步完善代码,以实现更精确的筛选。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值