如果其中一些文件没有 .DCM 扩展名,我如何递归扫描目录中的所有 DICOM 文件?

问题描述 投票:0回答:1

我正在编写一个代码来递归扫描任何给定的存储库,查找其中的所有 DICOM 文件,在 pydicom 的帮助下从文件中检索信息,并用它们执行进一步的操作(重命名、替换、使用所需信息制作数据框等) )

很快就发现,并非所有 DICOM 文件都具有 .DCM 或 .DCM30 扩展名。其中很多根本没有扩展名。 我如何识别这些特定文件是放射学研究,无论存储库如何,并将它们包含在循环中?

我已经尝试过:

    for dcm_file in pathlib.Path(a).rglob('*.DCM') or pathlib.Path(a).rglob('*.DCM30'):
        dcm_list.append(dcm_file.name)
    ds = pydicom.read_file(dcm_file.absolute(),force=True)
        name = ds.PatientName
        name = str(name)
        if name not in dcm_patients_names:
            dcm_patients_names.append(name)

它识别了所有具有 .dcm 扩展名的文件,不幸的是,这大约是所需数据的 30%

python path dicom
1个回答
0
投票

John Gordon 建议的解决方案有效,现在代码尝试以大象的优雅方式打开每个文件

    for dcm_file in pathlib.Path(InputPath).rglob('*'):
    counter = counter + 1
    try:
        dcm = dcmread(str(dcm_file))
        filesize = filesize + os.stat(dcm_file).st_size
        patientsname = str(dcm.PatientName)
        patientsname.replace(', ', '')
        new_row = pd.DataFrame({'PatientName': [patientsname], 'DateOfBirth': [dcm.PatientBirthDate], 'StudyDate': [dcm.StudyDate], 'StudyDescription': [dcm.StudyDescription], 'Modality': [dcm.Modality]})
        frames = [patients_df, new_row]
        patients_df = pd.concat(frames, ignore_index=True)
    except:
        continue

非常感谢<3

© www.soinside.com 2019 - 2024. All rights reserved.