删除两文件夹多出的文件,两文件夹文件后缀名不同,单个文件夹有多个后缀名文件

#删除pic_dir中比txt_dir多出的文件
pic_dir = '/media/lwf/KINGSTON/JPEGImages'  # 你的图片文件夹路径
txt_dir = '/media/lwf/KINGSTON/苹果数据集/txt' # 你的标签文件夹路径

JPEGImages中文件后缀名有.jpg和.png,共9255个文件。

txt中文件后缀名有.txt,共6190个文件。

txt中的文件除去后缀名在JPEGImages中都能找到。

现在要删除JPEGImage中比txt文件夹中多出的文件。

代码实现如下:

 

# encoding:utf-8
import os
import os.path

#删除pic_dir中比txt_dir多出的文件
pic_dir = '/media/lwf/KINGSTON/JPEGImages'  # 你的图片文件夹路径
txt_dir = '/media/lwf/KINGSTON/苹果数据集/txt' # 你的标签文件夹路径


def txt(rootdir):
    a = []
    for parent, dirnames, filenames in os.walk(rootdir):
        for filenames in filenames:
            filenames = filenames.split('.') [0]  #获取无后缀名的文件名称
            a.append(filenames)
    return a


def pic(rootdir):
    b = []
    for parent, dirnames, filenames in os.walk(rootdir):
        for filenames in filenames:
            filenames = filenames.split('.') [0] #获取无后缀名的文件名称
            b.append(filenames)
    return b

if __name__ == '__main__':
    txt_set = txt(txt_dir)
    txt_set = set(txt_set)#删除txt_set中的重复
    pic_set = pic(pic_dir)
    pic_set = set(pic_set)#删除pic_set中的重复
    # comp=txt_set-pic_set
    comp = pic_set - txt_set # 图片比标注多时,进行做差
    print("ok")
    print(len(comp))

    for item in comp:
        # 删去这些无标注的图片
        for root,dirs,files in os.walk(pic_dir):
            for file in files:
                filename = file.split('.')[0]  # 获取无后缀名的文件名称
                if item == filename:
                    os.remove(pic_dir + '/' + file)
        # file = pic_dir + '/' + item + '.png' #删除pic_dir中多出的文件
        # if os.path.exists(file):
        #     os.remove(file)
        #     print(file)

 得到的结果:

速度可能有点慢哈哈,欢迎小伙伴能提出更快速的方法!

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值