Я думаю, вам нужно создать каталоги для копирования файлов внутри них или, если у вас возникла исключительная ситуация, связанная с отсутствием каталога, попробуйте сначала создать его, а затем снова попытаться скопировать файл. В любом случае, вот пример кода, который, я думаю, делает то, что вы ищете.
import os
from random import shuffle
from shutil import copyfile, rmtree
org = os.path.realpath('org')
trn = os.path.realpath('trn')
tst = os.path.realpath('tst')
val = os.path.realpath('val')
# How split will be performed 26 3 3
rnd = [trn]*26+[tst]*3+[val]*3
rmtree(trn)
rmtree(tst)
rmtree(val)
rmtree(org)
# CREATE DUMMY DATA
for i in range(1, 131):
d = os.path.join(org, "{:03d}".format(i))
os.makedirs(d, exist_ok=True)
for f in range(1, 33):
f = os.path.join(d, "{:02d}".format(f))
open(f, 'a').close()
# ACTUAL STUFF
for d in os.listdir(org):
os.makedirs(os.path.join(trn, d))
os.makedirs(os.path.join(tst, d))
os.makedirs(os.path.join(val, d))
files = os.listdir(os.path.join(org,d))
shuffle(rnd)
for f, trg in zip(os.listdir(os.path.join(org,d)),rnd):
scr = os.path.join(org,d,f)
dst = os.path.join(trg,d,f)
copyfile(scr,dst)