用Python在Windows或Linux下批量删除文件夹中指定的文件

  • 情况说明:当在一个文件夹下面有好几十个或几百个文件需要删除,此时一一去挑选费时费力,特别是在Linux下面。因此,需要批量删除文件。

    对训练样本(图像)和测试样本(图像)进行评估时候,需要查看是数据本身问题还是自己模型的问题,因此需要将错误分类的样本(图像)挑选出来,看到底是标注本身问题,还是说模型没有训练好。当是样本本身问题,需要将错误样本删除。

    在3W多个训练样本中,查询到400多个是错误标注的数据,需要在数据集中删除。
   

    将要删除的文件路径放入txt,用Python的os读取文件,存入txt。然后在用os.remove()删除读出来的路径所指文件。

    由于我在Windows下面查看样本方便点,所以在Windows下面把文件相对路径写入txt,这里是第1段代码。

    然后在Linux服务器上,去执行批量删除文件的代码,这是第2段代码。(因此,复制本段代码需要注意路径问题!!!)

    

  1. 先将错误文件挑选出来,放在一个文件夹下的data_reduce.txt下面。
    import os
    from os import listdir
    # 错误文件放在reduce下面。
    anchor_dir='E:/WrongData/reduce/'
    anchor_files = [t for t in listdir(anchor_dir)]
    i=0
    #在wrongdata文件夹下面创建一个txt,保存错误文件的名字。
    with open('E:/WrongData/data_reduce.txt','w') as f:
        for f1 in anchor_files:
            path1 = anchor_dir+f1+'\n'
            print(path1)
            #设置文件对象
            f.write(path1)
            i +=1
        print(i)
  2. 读取data_reduce.txt中的文件路径,然后利用os.remove()删除这些文件。
    import os
    data_dir = "E:/train/4_classes/"
    file_handle=open('E:/WrongData/data_reduce_4.txt',mode='r')
    all_line = file_handle.readlines()
    for line in all_line:
        image_path=line
        print(image_path)
        # 需要去掉路径最后的换行符号。'\n'
        os.remove(image_path.strip('\n'))
    print("remove ok!")

猜你喜欢

转载自blog.csdn.net/qq_32998593/article/details/87981162
今日推荐