【问题标题】:Copy files whose name is in a list复制名称在列表中的文件
【发布时间】:2019-07-06 03:21:47
【问题描述】:

我想将文件复制到名称在名称列表中的新目录(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 行。可能与变量的传递方式有关。

【问题讨论】:

    标签: python numpy directory


    【解决方案1】:

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

    【讨论】:

    • 这给出了一个索引错误 IndexError: index 100078 is out of bounds for axis 0 with size 16928
    • 我的错,试试j.startswith(i):
    猜你喜欢
    • 2019-01-23
    • 2014-12-01
    • 1970-01-01
    • 2017-02-25
    • 2021-05-15
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 2017-02-18
    相关资源
    最近更新 更多