如何将特定文件从一个子目录移动到另一个子目录

时间:2019-06-26 23:54:00

标签: python jupyter-notebook shutil

这是我的目录结构:

 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个项,依次按120个品种的每一个的100个文件路径 ,即前100个图像是奇瓦瓦州,其次是Blenheim-Spaniel,依此类推。

我还有一个字典dog_iddog_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]))

1 个答案:

答案 0 :(得分: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]))

希望这行得通! :-)