使用pydicom处理dcm文件提取信息并存储在csv

    科技2022-08-22  98

    使用pydicom处理dcm文件提取信息并存储在csv

    使用pydicom

    使用pydicom

    #! /usr/bin/env python # _*_ coding:utf-8 _*_ import pydicom as dicom import csv import codecs import os import re #需要遍历的目录 DATA_PATH = 'C:\\Users\\admin\Desktop\\level2\\' #提取的字段 list=['PatientID', 'PatientAge', 'PatientSex', 'KVP', 'PixelSpacing', 'SliceThickness', 'Modality', 'Manufacturer', 'PatientName', 'XRayTubeCurrent', 'BodyPartExamined', 'Columns', 'Rows', 'WindowCenter', 'WindowWidth'] #用来存储字段对应代码 list1=[] #判断是否存储字段对应代码 flag1 = 0 def getfile(DATA_PATH): global flag1 #定义csv文件路径 csvFile = codecs.open('D:\\1.csv', 'w', encoding='GBK') writer = csv.writer(csvFile) #写入标题 writer.writerow(list) #遍历目录 for root,dirs,files in os.walk(DATA_PATH): for file in files: if 'dcm' in file: filepath=os.path.join(root,file) ret=getinfomation(filepath) if flag1==0: writer.writerow(list1)#写入对应编号 #global flag flag1=1 writer.writerow(ret) break csvFile.close() #通过文件路径获取字段 def getinfomation(path): #使用dicom读取文件信息 information = dicom.read_file(path) print(path) ds=information tmp=[] for i in range(0,len(list)): #读取字段 做异常处理 try: val = str(ds.data_element(list[i]).value) except: val="null" tmp.append(str(val)) #print(list[i]) #print(ds.data_element(list[i])) #print(str(ds.data_element(list[i]))) if flag1==0: list1.append(re.match('\(.*\)',str(ds.data_element(list[i]))).group()) tmp.append(str(path)) #增加存储路径 return tmp if __name__ == '__main__': getfile(DATA_PATH) #filepath = "C:\\Users\\admin\\Desktop\\level2\\468379524.dcm" #getinfomation(filepath)
    Processed: 0.013, SQL: 9