Python 在处理png图像和csv文件之前,请检查它们是否具有相同的名称

Python 在处理png图像和csv文件之前,请检查它们是否具有相同的名称,python,string,csv,pandas,png,Python,String,Csv,Pandas,Png,我有一个由图像和csv文件组成的数据集5000。每个图像都映射有其csv文件。例如,img_33e_78.png映射为img_33e_78.csv。 对于每个图像,我都有一个csv文件,其中包含要处理的给定像素。 为此,我需要检查我是否使用正确的csv文件处理图像。这就是为什么我需要检查图像和csv的名称。区别仅在.png和.csv上存在。 这是我的密码: import os import glob import pandas as pd import h5py indir_images="

我有一个由图像和csv文件组成的数据集5000。每个图像都映射有其csv文件。例如,img_33e_78.png映射为img_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

我想我会从制作一组图像和csv文件开始。我删除了文件扩展名,因为它们是比较文件的真正问题。 这是使用列表理解完成的。也可以使用map完成

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'))
然后我们制作一个超集,我们知道我们两者都有。


这样,您就知道您拥有所有匹配的文件。

@Ajuma,但我如何访问第二个文件(例如,使用您的解决方案映像名[2]和csv名称[2])返回TypeError:“set”对象不支持图像名称和csv名称中的名称索引:不工作我尝试在内部打印Hello它不打印任何内容,即使zipimage名称中有for名称,csv名称使用for循环我们正在迭代所有匹配的名称。由于它们匹配,我们可以通过添加文件扩展名打开它们,image_names&csv_names将创建一个新的集合,其中包含两个集合中存在的成员。
for name in image_names & csv_names:
    open(name+'.jpg)
    etc...