別々のフォルダに散らばって保存されたファイルを1つにまとめる[Python]

└─data
├─test
│ ├─0
│ │ train_0000010.tif
│ │ train_0000011.tif
│ │ train_0000012.tif
│ │ train_0000013.tif
│ │ train_0000014.tif
│ │
│ └─1
│ train_0000015.tif
│ train_0000016.tif
│ train_0000017.tif
│ train_0000018.tif
│ train_0000019.tif
└─train
├─0
│ train_0000005.tif
│ train_0000006.tif
│ train_0000007.tif
│ train_0000008.tif
│ train_0000009.tif
└─1
train_0000000.tif
train_0000001.tif
train_0000002.tif
train_0000003.tif
train_0000004.tif

こういった様々なフォルダに散らばって保管されたファイルたちを一つのフォルダにまとめるスクリプトを紹介.

import os
import shutil
from glob import glob
files = "data/*/*/*.tif"
dst = "path/to/dst"
for file in glob(files):
dst_file_path = os.path.join(dst, os.path.basename(file))
shutil.copy(file, dst)

globを使って2階層以上のファイルをリスト化したことが工夫点

もし良かったら使ってください.