gpt4 book ai didi

python - 如何根据Python列表中的文件名将图像文件排序到两个文件夹中?

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:18 24 4
gpt4 key购买 nike

我有一个包含狗图像的文件夹,名为dogID-X.jpg,其中X是属于一个dogID的图片编号,例如0a08e-1.jpg、0a08e-2.jpg、0a08e-3.jpg 表示有三张图像属于同一只狗。如何根据两个仅包含dogID [0a08e,4a45t,...]的列表将这些图像分类到两个子文件夹中,即所有具有来自一个列表的ID的图像应进入一个文件夹,而来自另一个列表的所有图像应进入另一个文件夹。谢谢!该列表如下所示:list(y_labels) = ['86e1089a3',
'6296e909a',
'5842f1ff5',
'850a43f90',
'd24c30b4b',
'1caa6fcdb',...]

for image in list(y_labels):
folder = y_labels.loc[image, 'PetID']
old = './train_images/{}'.format(image)
new = '//train_images_new/{}/{}'.format(folder, image)
try:
os.rename(old, new)
except:
print('{} - {}'.format(image,folder))

最佳答案

假设您有 lis1 和 lis2 作为 2 个仅包含dogID 的列表,还有一个包含所有图像的文件夹,我将其称为“mypath”,子文件夹将命名为“lis1”和“lis2” .

import os

# path to image folder, get all filenames on this folder
# and store it in the onlyfiles list

mypath = "PATH TO IMAGES FOLDER"
onlyfiles = [f for f in os.listdir(mypath) if os.path.isfile(os.path.join(mypath, f))]

# your list of dogID's
lis1 = ["LIST ONE"]
lis2 = ["LIST TWO"]

# create two seperate lists from onlyfiles list based on lis1 and lis2
lis1files = [i for i in onlyfiles for j in lis1 if j in i]
lis2files = [i for i in onlyfiles for j in lis2 if j in i]

# create two sub folders in mypath folder
subfolder1 = os.path.join(mypath, "lis1")
subfolder2 = os.path.join(mypath, "lis2")

# check if they already exits to prevent error
if not os.path.exists(subfolder1):
os.makedirs(subfolder1)

if not os.path.exists(subfolder2):
os.makedirs(subfolder2)

# move files to their respective sub folders
for i in lis1files:
source = os.path.join(mypath, i)
destination = os.path.join(subfolder1, i)
os.rename(source, destination)

for i in lis2files:
source = os.path.join(mypath, i)
destination = os.path.join(subfolder2, i)
os.rename(source, destination)

希望它能解决您的问题。

关于python - 如何根据Python列表中的文件名将图像文件排序到两个文件夹中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55257704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com