Python:在列表中存储图像和关联的文件夹名称

问题描述:

我对Python很新,我想知道是否有人可以帮我解决这个问题。Python:在列表中存储图像和关联的文件夹名称

我有每个子文件夹中包含它相关image.Such文件夹“火车”与子文件夹“球”,“椅子”,“杯具”,“袋”为:

project/Train/ball/01.jpg 
project/Train/chair/02.jpg 
project/Train/cup/03.jpg 
project/Train/bag/04.jpg 

我写了下面的代码从火车

names_path = [] 
training_paths = [] 

for name in glob.glob('/Train/**/*.jpg'): 
    img = cv2.imread(name) 
    training_paths.append(name) 

读取图像对于names_path = []我想储存子文件夹的名称(袋,聊天,杯,球)当前图像的。因此,如果在循环的第一图像属于球,保存图像路径training_paths和“球”到names_path

我已经用另一个循环,如

for clas in glob.glob('/Train/*/'): 

试图但是,当我检查清单中的所有条目是无。

+0

是你说你想把'p'加到'names_path'?如果是这样,只需在现有循环内添加'names_path.append(p)'。 –

+0

你在哪里运行你的python脚本?你已经在'Train'吗? – TerryA

+0

如果您需要提取部分路径(如目录名称),请查看'os.path'模块:https://docs.python.org/3/library/os.path.html – nyrocron

如果file_path IST你的形象,你可以得到的目录名的路径:

from os import path 
file_path = "project/Train/ball/01.jpg" 
dir_name = path.basename(path.dirname(file_path)) # "ball" 

这取决于你从哪里运行文件,但我认为你的错误是你不需要Train之前的斜线。

变化:

glob.glob('/Train/**/*.jpg') 

要:

glob.glob('Train/**/*.jpg') 

您的代码产生空列表,所以for循环从未运行。