Как переместить файлы с использованием Regex или String Formatting в Python - PullRequest
0 голосов
/ 28 апреля 2020

Я новичок в области науки о данных и работаю с предварительной обработкой данных в python. Тем не менее, я работаю с набором данных Fingers, поэтому хочу переместить изображения, чтобы каждый pi c помещался в свой собственный каталог, чтобы иметь возможность использовать ImageDataGenerator и flowfromdirectory для импорта картинки и применять масштабирование, переворачивание ... et c

приведенный ниже код показывает, что я пытаюсь сделать ...

dataset_path = "/tmp/extracted_fingers/fingers"
train_set = os.path.join(dataset_path, "train/")
test_set = os.path.join(dataset_path, "test/")

for i in range(6):
    os.mkdir("/tmp/extracted_fingers/fingers/train/" + str(i) + "L")
    os.mkdir("/tmp/extracted_fingers/fingers/test/" + str(i) + "L")
for i in range(6):
    os.mkdir("/tmp/extracted_fingers/fingers/train/" + str(i) + "R")
    os.mkdir("/tmp/extracted_fingers/fingers/test/" + str(i) + "R")

L_0_tr = glob.glob(train_set + "*0L.png")
L_1_tr = glob.glob(train_set + "*1L.png")
L_2_tr = glob.glob(train_set + "*2L.png")
L_3_tr = glob.glob(train_set + "*3L.png")
L_4_tr = glob.glob(train_set + "*4L.png")
L_5_tr = glob.glob(train_set + "*5L.png")
R_0_tr = glob.glob(train_set + "*0R.png")
R_1_tr = glob.glob(train_set + "*1R.png")
R_2_tr = glob.glob(train_set + "*2R.png")
R_3_tr = glob.glob(train_set + "*3R.png")
R_4_tr = glob.glob(train_set + "*4R.png")
R_5_tr = glob.glob(train_set + "*5R.png")

L_0_ts = glob.glob(test_set + "*0L.png")
L_1_ts = glob.glob(test_set + "*1L.png")
L_2_ts = glob.glob(test_set + "*2L.png")
L_3_ts = glob.glob(test_set + "*3L.png")
L_4_ts = glob.glob(test_set + "*4L.png")
L_5_ts = glob.glob(test_set + "*5L.png")
R_0_ts = glob.glob(test_set + "*0R.png")
R_1_ts = glob.glob(test_set + "*1R.png")
R_2_ts = glob.glob(test_set + "*2R.png")
R_3_ts = glob.glob(test_set + "*3R.png")
R_4_ts = glob.glob(test_set + "*4R.png")
R_5_ts = glob.glob(test_set + "*5R.png")

shutil.move(L_0_tr, "0L")
shutil.move(L_1_tr, "1L")
shutil.move(L_2_tr, "2L")
shutil.move(L_3_tr, "3L")
shutil.move(L_4_tr, "4L")
shutil.move(L_5_tr, "5L")
shutil.move(R_0_tr, "0R")
shutil.move(R_1_tr, "1R")
shutil.move(R_2_tr, "2R")
shutil.move(R_3_tr, "3R")
shutil.move(R_4_tr, "4R")
shutil.move(R_5_tr, "5R")

shutil.move(L_0_ts, "0L")
shutil.move(L_1_ts, "1L")
shutil.move(L_2_ts, "2L")
shutil.move(L_3_ts, "3L")
shutil.move(L_4_ts, "4L")
shutil.move(L_5_ts, "5L")
shutil.move(R_0_ts, "0R")
shutil.move(R_1_ts, "1R")
shutil.move(R_2_ts, "2R")
shutil.move(R_3_ts, "3R")
shutil.move(R_4_ts, "4R")
shutil.move(R_5_ts, "5R")

Теперь этот способ может сделать работу, но я на 100% уверен, что есть лучшие способы с гораздо меньшим набором текста, поэтому я, как новичок, пытаюсь это сделать ...

Я не знаю, можно ли это сделать с помощью циклов , Regex, форматирование строк или любой другой способ ...

Однако, если кто-нибудь может мне помочь, я буду признателен ...

Небольшая помощь может быть полезной.

Заранее спасибо. Много любви

Примечание: если хотите, я могу дать больше информации

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Я нашел свой собственный способ сделать это, однако я поделюсь кодом, если кому-то это понадобится ...

def moving_pics(files_set):
    for i in range(0, 6):
        direction = glob.glob(files_set + "*" + str(i) + "L.png")
        for p in direction:
            shutil.move(p, files_set + str(i) + "L")

    for i in range(0, 6):
        sec_direction = glob.glob(files_set + "*" + str(i) + "R.png")
        for p2 in sec_direction:
            shutil.move(p2, files_set + str(i) + "R")

, затем вы передадите путь к параметру функции

** Примечание: ** вам нужно пройти путь, который заканчивается на "/".

0 голосов
/ 28 апреля 2020

Не знаю, сильно ли это поможет, но вы можете использовать встроенную функцию map , чтобы уменьшить количество строк.

map(lambda x: shutil.move(glob.glob(train_set + "*"+str(x)+"R.png"),str(x)+"R"), range(0,6))
map(lambda x: shutil.move(glob.glob(train_set + "*"+str(x)+"L.png"),str(x)+"L"), range(0,6))

map(lambda x: shutil.move(glob.glob(test_set + "*"+str(x)+"R.png"),str(x)+"R"), range(0,6))
map(lambda x: shutil.move(glob.glob(test_set + "*"+str(x)+"L.png"),str(x)+"L"), range(0,6))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...