在处理之前检查png image和csv文件是否具有相同的名称

时间:2017-04-13 15:21:51

标签: python string csv pandas png

我有一个由图像和csv文件组成的数据集(5000个数据)。每个图像都使用其csv文件进行映射。例如,img_33e_78.pngimg_33e_78.csv映射。 对于每个图像,我有一个csv文件,其中包含要处理的给定像素。 为此,我需要检查我是否使用正确的csv文件处理图像。这就是我需要检查图像名称和csv的原因。区别仅在于.png.csv。 这是我的代码:

import os
import glob
import pandas as pd
import h5py


indir_images="image"
os.chdir(indir_images)
images_name=glob.glob("*.png")


indir_csv="clean_data"
os.chdir(indir_csv)
csv_names=glob.glob("*.csv")

for img,csv in zip(images_name,csv_names):
    if (image_name == csv_name) #here l need to ckeck that the image and csv file have the same name
        # do the processing

1 个答案:

答案 0 :(得分:1)

我想我会先制作你的图像和csv文件集。我删除文件扩展名,因为它们是比较文件的真正问题。 这是使用列表理解完成的。也可以使用地图完成。

image_names = set([x.rsplit('.', 1)[0] for x in glob.glob('*.png')])
csv_names = set([x.rsplit('.', 1)[0] for x in glob.glob('*.csv')])
# Alternatively using map
image_names = set(map(lambda x: x.rsplit('.', 1)[0], glob.glob('*.png'))

然后我们用我们知道两者都有的超集来制作超集。 https://docs.python.org/2/library/sets.html#set-objects

for name in image_names & csv_names:
    open(name+'.jpg)
    etc...

通过这种方式,您知道所有文件都匹配。