无法将从DICOM文件提取的详细信息写入csv fi

2024-10-03 17:21:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法将从DICOM文件提取的详细信息写入CSV文件。这是我用过的密码-

import pydicom
import os
import pandas as pd
import csv 
import glob 

data_dir= 'C:\\Users\\dmgop\\Personal\\TE Project - Pneumonia\\stage_1_test_images_dicom' 
patients= os.listdir(data_dir)
myFile= open('patientdata.csv','w')
for image in patients:
    lung = pydicom.dcmread(os.path.join(data_dir, image))
    print (lung)
    writer = csv.writer(myFile)
    writer.writerows(lung)
    break

即将出现的错误如下-

Traceback (most recent call last): File "C:\Users\dmgop\AppData\Local\Programs\Python\Python36\lib\site-packages\pydicom-1.2.0rc1-py3.6.egg\pydicom\dataelem.py",
line 344, in getitem
return self.value[key] TypeError: 'PersonName3' object does not support
indexing

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "C:\Users\dmgop\Personal\TE
Project - Pneumonia\detail_extraction.py", line 14, in
writer.writerows(lung) File
"C:\Users\dmgop\AppData\Local\Programs\Python\Python36\lib\site-packages\pydicom-1.2.0rc1-py3.6.egg\pydicom\dataelem.py",
line 346, in getitem
raise TypeError("DataElement value is unscriptable " TypeError: DataElement value is unscriptable (not a Sequence)


Tags: csvinpyimportdatavalueosdir
1条回答
网友
1楼 · 发布于 2024-10-03 17:21:54

假设for循环中的“break”语句意味着您只需要第一个图像的信息,请尝试:

import pydicom
import os
import csv 

data_dir = 'C:\\Users\\dmgop\\Personal\\TE Project-Pneumonia\\stage_1_test_images_dicom' 
patients = os.listdir(data_dir)
with open('file.csv','w') as myfile:
    writer = csv.writer(myFile)
    # patients[0] means get the first filename, no need for the for loop
    lung = pydicom.dcmread(os.path.join(data_dir, patients[0]))
    print(lung.formatted_lines)
    # pay attention to the function_call  > formatted_lines()
    writer.writerows(lung.formatted_lines())

看看Pydicom docs for FileDataset,这是dcmread方法的返回类型。
如果要写入目录中所有文件的数据,请尝试以下操作:

^{pr2}$

另请看一下this paragraph的最后一部分,它使用了'with open()as'

相关问题 更多 >