Python 筛选同名的不同类型文件

最近在筛选用labelImg标注的图片文件时,发现有大量未标注的图片不能够进行训练,于是写了个根据已有标签文件名筛选同名图片的程序:

'''
Description: 
version: 1.0.0
Author: yuanruiyi
Date: Thu, 23 Feb 2023 09:57:00
LastEditors: yuanruiyi
LastEditTime: Thu, 23 Feb 2023 09:57:00 
todo: 筛选图片中有对应标签文件名的图片
'''
# 使用方法:python fileFilter.py path1 path2 path3
# -path1 被筛选文件夹 
# -path2 对照文件夹 
# -path3 保存文件夹

import os
import glob
import sys
from rich.progress import track
import cv2

def dirlist(path, allfile):  
    filelist =  os.listdir(path)  
  
    for filename in filelist:  
        filepath = os.path.join(path, filename)  
        if os.path.isdir(filepath):  
            dirlist(filepath, allfile)  
        else:  
            allfile.append(filepath)  
    return allfile  
  
folderPath1 = sys.argv[1] 
filePath1 = []
fileName1 = []
fileType1 = ""
dirlist(folderPath1, filePath1)
print("被筛选文件夹:" + folderPath1)

folderPath2 = sys.argv[2]  
filePath2 = []
fileName2 = []
fileType2 = ""
dirlist(folderPath2, filePath2)
print("对照文件夹:" + folderPath2)

folderPath3 = sys.argv[3]
print("保存文件夹:" + folderPath3)

#遍历所有文件,获取文件名称(不含后缀)
for item in filePath1:
    fileName1.append(os.path.basename(item).split('.')[0])

for item in filePath2:
    fileName2.append(os.path.basename(item).split('.')[0])

##遍历被筛选文件夹,转存与对照文件夹中同名的文件
for item2 in track(fileName2):
    for item1 in fileName1:
        if item1 == item2:
            path_in = str(folderPath1) + item1 +".jpg"
            img = cv2.imread(str(path_in))
            # 显示当前图片
            # cv2.imshow("temp",img)
            # cv2.waitKey(1)
            path_out = str(folderPath3) + item1 + ".jpg"
            print(path_out)
            cv2.imwrite(path_out, img)

函数的总体思路参考这位老哥的博客:重名文件筛选

筛选部分参考这个博客的方法:获取文件名不加后缀

注意:需要安装rich和cv2库才可正常运行。

如果本篇博文对你有帮助的话,麻烦到github(fileFilter)帮忙点个小星星~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值