用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!")

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章