Как переместить определенные файлы из одного подкаталога в другой

Вот как выглядит моя структура каталогов:

 Dataset
   ---> Images
          ----> n02085620-Chihuahua
                    ---> n02085620_01.jpg
                    ---> n02085620_02.jpg
                    .
                    .
                    . (~ 150+ files)
          ----> n02086646-Blenheim-Spaniel
          ----> n02087046-Toy-Terrier
          .
          .
          .
          (120 Folders)
   ---> Training
          ---> Chihuahua
          ---> Blenheim Spaniel
          ---> Toy Terrier
          .
          .
          .
          (120 Empty Folders)

У меня также есть список путей к файлам:

train_file_list = ['n02085620-Chihuahua/n02085620_5927.jpg', ... ', 'n02086646-Blenheim_spaniel/n02086646_1342.jpg', ..., 'n02087046-toy_terrier/n02087046_3490.jpg' ]

Этот список содержит 12 000 элементов, 100 путей к файлам для каждая из 120 пород в порядке , т. е. первые 100 изображений - чихуахуа, следующие 100 - бленхейм-спаниель и т. д.

У меня также есть словарное отображение dog_id - dog_breed, построенное из двух соответствующих списков:

n02097658: Chihuahua
n02092002: Japanese Spaniel
n02099849: Maltese
.
.
.
(120 key-value pairs)

Я пытаюсь перебрать свой список путей к файлам и для каждого пути к файлу, который начинается с помощью dog_id я хочу переместить этот файл в соответствующую папку в Dataset/Training, используя словарь для сопоставления его с породой.

Вот код, который я пробовал на Jupyter Notebook , который, похоже, не работает. Куда я иду не так? Пожалуйста, помогите !!!

root = "/Users/krithika/Desktop/GitHub Repositories/The-Pup-Files"

os.chdir(root)

for d_id, file in zip(dog_ids, train_file_list):
    if file.startswith(d_id):
        shutil.copy((root + "/Dataset/Images/" + file), (root + "/Dataset/Training/" + dog_ids_breeds[d_id]))
0
задан eyllanesc 27 June 2019 в 00:15
поделиться

1 ответ

Почему бы вам не попробовать вложить свои циклы, как это:

for d_id in dog_ids:
    for file in train_file_list:
        if file.startswith(d_id):
            shutil.copy((root + "/Dataset/Images/" + file), (root + "/Dataset/Training/" + dog_ids_breeds[d_id]))

Надеюсь, это работает! :-)

1
ответ дан Wil 27 June 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: