Находите из одного каталога в другой

#python #list #csv #directory

Вопрос:

Я пытаюсь прочитать вывод огромного списка из каталога файлов, и как только он его найдет, он поместит его в другой файл с помощью python.

У меня огромный набор данных, и я смог разделить csv на 3 разные папки в зависимости от их классов.

Мне нужно выполнить поиск по списку изображений столбцов, найти их в каталоге и поместить в новый файл

Чтобы все было ясно:

 class0.csv ,Unnamed: 0,noise,rot_ratio,background,class,images
0,0,0.031495803,0.383730466,0.870530701,0,00859199-ad58-4334-8635-07a094e11f94.JPG
5,5,2.605760607,0.547664714,-0.59016648,0,03159229-f613-4bd2-be32-82cf65496865.JPG
13,13,0.79224368,0.742954625,1.136200214,0,083ba0e4-cf97-40b7-9de3-0cdb618006c5.JPG
18,18,-0.416518561,0.432365614,1.12786556,0,0a9bca0f-dcbd-458e-a2bf-557876e5b402.JPG
36,36,2.192400275,0.558622462,-1.038830864,0,0e96c5b0-2ea6-441c-a1b6-22b5f650347b.JPG
46,46,-0.575673656,0.429221735,1.348484522,0,152c3bd4-dc1b-4328-a303-d923c226c040.JPG
51,51,3.880669006,0.295885257,1.005818478,0,19424685-3776-472c-8b07-f4c01643424e.JPG
53,53,1.552991557,0.485258419,0.282584728,0,1a8be963-4696-4605-826a-b9c1999985ae.JPG
 

Todo:
Мне нужно найти изображения из моего каталога файлов и поместить их в другой файл, так как файл содержит изображения из разных классов.
Надеюсь, это ясно.

 import csv
from collections import defaultdict

columns = defaultdict(list) # each value in each column is appended to a list

with open('class0.csv') as f:
    reader = csv.DictReader(f) # read rows into a dictionary format
    for row in reader: # read a row as {column1: value1, column2: value2,...}
        for (k,v) in row.items(): # go over each column name and value 
            columns[k].append(v) # append the value into the appropriate list
                                 # based on column name k
image = columns['images']
print(image)
 

список выходных данных

 '00859199-ad58-4334-8635-07a094e11f94.JPG', '03159229-f613-4bd2-be32-82cf65496865.JPG', '083ba0e4-cf97-40b7-9de3-0cdb618006c5.JPG', '0a9bca0f-dcbd-458e-a2bf-557876e5b402.JPG', '0e96c5b0-2ea6-441c-a1b6-22b5f650347b.JPG', '152c3bd4-dc1b-4328-a303-d923c226c040.JPG', '19424685-3776-472c-8b07-f4c01643424e.JPG', '1a8be963-4696-4605-826a-b9c1999985ae.JPG', '1d5c3c21-77d1-42d8-a4fc-80e8db01e2f2.JPG', '1ec36552-00af-454a-af47-de600baf3f1b.JPG', '2acbdc0e-9ae9-47e3-9dc3-c6a124c19296.JPG', '2c9e886e-ac63-4c60-b959-b7bccdd20289.JPG', '2df13128-ff88-4813-973b-c83296f1cbf5.JPG', '2eb9f4b7-cabc-4cd8-98b9-2f3470d623d2.JPG', '3169cf83-c70c-48b6-8332-9cae259e2204.JPG', '339371b4-c470-4489-832a-acd1d9c68d9f.JPG', '3504dc2b-8516-4ffc-bf02-9972409cfb0b.JPG', '364b3c69-dc6a-4afb-b67c-eb0854b5eaaf.JPG', '38cae58c-c150-4e39-a319-a57db3d9ac5f.JPG', '3ee6554f-3d7b-4094-844f-9539cc97a286.JPG', '444ea9ce-cdb5-4f48-ae28-d18e247bc6e4.JPG', '4513be86-e1ee-46a1-8897-30101045b420.JPG', '4e587d28-9656-47cc-bcac-93de429c3847.JPG', '4f4d7096-a3d7-49fe-90c8-63faed85d66c.JPG'
 

Теперь у меня есть папка со множеством изображений, включая список вывода. Я хочу найти эти конкретные изображения из основной папки и поместить их в новую.

Сделано до сих пор: (мне нужно прочитать вывод списка и найти его в папке source_dir и поместить конкретные файлы в target_dir)

 import shutil
import os
    
source_dir = '/images'
target_dir = 'class0'
    
file_names = os.listdir(source_dir)
    
for file_name in file_names:
    shutil.move(os.path.join(source_dir, file_name), target_dir)
 

Мне нужно разместить только определенные изображения из списка вывода

Комментарии:

1. В names CSV-файле нет столбца.

2. Я не понимаю, что ты пытаешься сделать.

3. Так и должно columns['names'] быть columns['images'] ? Как это связано с вопросом?

4. мне нужно найти файлы (.jpg и т. Д.) Из одного каталога и поместить их в другой. Теперь у меня есть их список. Я отредактирую сообщение, чтобы прояснить его!

5. Что вы подразумеваете под «поместить это в другой файл»? Вы имеете в виду копирование файла изображения? Используется shutil.copy() для копирования файла.