Python 迭代DICOM文件

Python 迭代DICOM文件,python,pydicom,Python,Pydicom,我使用pydicom读取dicom文件(患者姓名),但我所有的dicom文件的名称都是i34、i67等(这些名称没有特定的顺序或顺序)。 我的问题:我有一个txt文件中的患者姓名列表,我想用所有dicom文件搜索该txt文件中的每个患者姓名,并在dicom文件中查找他们的患者姓名(对于不熟悉的人,每个dicom文件都有一个患者的多个信息,其中一个是患者姓名) 例如: txt文件: 约翰 乔治 林戈 保罗 Dicom文件: i54 i98 i64 i12 我想要的是: 以John为例,在i54、i

我使用pydicom读取dicom文件(患者姓名),但我所有的dicom文件的名称都是i34、i67等(这些名称没有特定的顺序或顺序)。 我的问题:我有一个txt文件中的患者姓名列表,我想用所有dicom文件搜索该txt文件中的每个患者姓名,并在dicom文件中查找他们的患者姓名(对于不熟悉的人,每个dicom文件都有一个患者的多个信息,其中一个是患者姓名)

例如:

txt文件: 约翰 乔治 林戈 保罗

Dicom文件: i54 i98 i64 i12

我想要的是: 以John为例,在i54、i98、i64、i12中搜索PatientName匹配项。并对txt文件中的每个名称执行此操作。希望我把自己说清楚。提前通知

编辑

我尝试了这个代码,但没有成功

import dicom
import os

dir = "/path/to/dir_where_dicom_file_are"
txt = open('/path/to/txt_with_patientsnames.txt','r')
for line in txt:
    for sub, dirs, files in os.walk(dir):
        names = line.strip()
        for dcm in files:
           ds = dicom.read_file(dir+dcm) #necessary for read dicom files                            
           patient = ds.PatientName
           if names in patient:
           #do something
我采集了20张dicom图像和20个名字的样本。我知道这个样本只有一个dicom文件属于一个患者姓名,所以我的输出应该只有一个匹配项,对吗?但是我得到了20场比赛的结果。怎么了?

问题在于逻辑(更具体地说是缺乏逻辑)


老实说,我不知道一开始是怎么回事。你也可以从不同的角度考虑这个问题。您可以将DICOM文件组织到一个目录层次结构中,其中包括一个级别的PatientName。这将简化快速查找相关文件的过程。可以帮助您完成此任务的一个脚本是

使用该工具,下面的命令将把输入目录中的DICOM文件排序到PatientName>StudyDate>SeriesDescription InstanceNumber命名目录结构中。我经常使用这种排序作为后续处理的先决条件。当然,如果您使用的是一个非常大的数据集,并且只需要访问其中的一小部分,那么这将是一个次优的解决方案,但我认为它可能适合您的情况

dicomsort data sorted/%PatientName/%StudyDate/%SeriesDescription-%InstanceNumber.dcm
dicomsort data sorted/%PatientName/%StudyDate/%SeriesDescription-%InstanceNumber.dcm