【Python】複数のフォルダから違うファイル名のデータを削除する【Google Colab】
やりたいこと
複数のフォルダから、共通していないファイル名のデータを削除したい
たとえば、画像のようにデータフォルダA、データフォルダBに共通していない
データ3.csv, データ4.csvを削除したい
作成したコード全体
import os import glob from natsort import natsorted ###エラーデータを取り除く def sort_file(files1,files2,files3,files4): i=0 while True: # どれかのファイルが最後の要素になったらwhile文を終了 if len(files1) < i+1: files2 = files2[:i] files3 = files3[:i] files4 = files4[:i] break if len(files2) < i+1: files1 = files1[:i] files3 = files3[:i] files4 = files4[:i] break if len(files3) < i+1: files1 = files1[:i] files2 = files2[:i] files4 = files4[:i] break if len(files4) < i+1: files1 = files1[:i] files2 = files2[:i] files3 = files3[:i] break # ファイルパスからファイル名を取得 file1 = os.path.splitext(os.path.basename(files1[i]))[0] file2 = os.path.splitext(os.path.basename(files2[i]))[0] file3 = os.path.splitext(os.path.basename(files3[i]))[0] file4 = os.path.splitext(os.path.basename(files4[i]))[0] # 日時の部分(10桁目)までをintで取得 file1_sliced = int(file1[:10]) file2_sliced = int(file2[:10]) file3_sliced = int(file3[:10]) file4_sliced = int(file4[:10]) # 同じ日時のデータが揃っているなら次を読み込み、揃っていないなら削除 if file1_sliced == file2_sliced == file3_sliced == file4_sliced: # 揃っているなら次の要素 i = i+1 continue # 最大値より小さいなら削除 file_max = max(file1_sliced, file2_sliced, file3_sliced, file4_sliced) # 最大値 if file1_sliced < file_max: del files1[i] if file2_sliced < file_max: del files2[i] if file3_sliced < file_max: del files3[i] if file4_sliced < file_max: del files4[i] return files1, files2, files3, files4 ###データのあるフォルダの指定 folder_path12 = 'フォルダのパス' folder_path3 = 'フォルダのパス' folder_path4 = 'フォルダのパス' folder_path5 = 'フォルダのパス' ###指定したフォルダ内のファイルのパスを取得 files12 = natsorted(glob.glob("{}/*".format(folder_path12))) files3 = natsorted(glob.glob("{}/*".format(folder_path3))) files4 = natsorted(glob.glob("{}/*".format(folder_path4))) files5 = natsorted(glob.glob("{}/*".format(folder_path5))) files12,files3,files4,files5 = sort_file(files12,files3,files4,files5)
上記のコードは、ファイル名の最初10桁目までに日時情報が入っているデータを扱っており、4つのフォルダ(files12, files3, files4, files5)すべてに共通するデータのファイルパスが返される