首页 > 解决方案 > 复制名称在列表中的文件

问题描述

我想将文件复制到名称在名称列表中的新目录 (good_images)

我有超过 60,000 张图像和 16,000 个名称的列表。事实上,我知道列表中的每个名称都与图像的名称相匹配。例如,图像命名为 100079.jpg,列表为 100079。我已将 .jpg 附加到列表中每个数字的末尾,但这并没有帮助。

import os
from shutil import copy2
import pandas as pd
import numpy as np
Good_File_Names_jpg = []
for i in Good_File_Names:
    Good_File_Names_jpg.append('%s.jpg' % i) #add .jpg to end of list so its similar to file names
for i in (Good_File_Names):
    for j in os.listdir('images_training_rev1_editing'):
        if j.startswith('Good_File_Names[i]'):
            os.chdir('images_training_rev1_editing')
            copy2('%s' % j, 'good_images')
            os.chdir('..')
            print(j)

我知道循环有效,因为它需要 10 分钟才能运行,如果我用数字(比如说 100078)替换“Good_File_Names[i]”,它会成功地将 100078.jpg 复制到新目录。我认为问题出在这j.startwith条线上。可能与变量的传递方式有关。

标签: pythonnumpydirectory

解决方案


问题是你有你j.startswith('Good_File_Names[i]'):的引号,所以 Python 将它解释为一个字符串。Good_File_Names您还已经使用变量遍历了 的值i。替换有问题的代码j.startswith(i):应该可以解决问题。


推荐阅读