Что ж, первое, что нужно сделать, это прочитать ваш Excel и построить отображение из исходного файла в папки назначения:
VIDEO_ROOT_FOLDER = 'C:\Users\Me\Videos'
transferrable_data = defaultdict(list)
for row in excel_iteratable:
video_source_path = os.path.join(VIDEO_ROOT_FOLDER, row['category'], row['videoname'])
if (row['test'] == 1):
split_type = 'test'
else: # I suppose you can only dispatch to test or train in a row
split_type = 'train'
video_destination_path = os.path.join(VIDEO_ROOT_FOLDER, row['category'], split_type, row['videoname']))
transferrable_data[video_path_source].append(video_destination_path)
, затем вы можете написать скрипт, в котором ваши файлы будут перемещены по правильным путям, используя один из двух следующих методов:
import os
os.rename("path/to/current/video", "path/to/destination/folder")
или если вам нужно скопировать (вы не хотите изменять папку с видео):
from shutil import copyfile
copyfile("path/to/current/video", "path/to/destination/folder")
Скажем, например, что ваше отображение:
transferrable_data = {'C:\Users\Me\Videos\a\video1.mp4' : ['C:\Users\Me\Videos\a\train\video1.mp4'], 'C:\Users\Me\Videos\a\video2.mp4': ['C:\Users\Me\Videos\b\test\video2.mp4', 'C:\Users\Me\Videos\c\test\video2.mp4']}
вы можете сделать что-то вроде:
from shutil import copyfile
transferrable_data = {'C:\Users\Me\Videos\a\video1.mp4' : ['C:\Users\Me\Videos\a\train\video1.mp4'], 'C:\Users\Me\Videos\a\video2.mp4': ['C:\Users\Me\Videos\b\test\video2.mp4', 'C:\Users\Me\Videos\c\test\video2.mp4']}
for src, destination_list in transferrable_data.items():
for dest in destination_list:
copyfile(src, dest)