使用pydicom尝试读取测试文件,如下所示:
from pydicom.data import get_testdata_files
pass_dicom = "CT-MONO2-16-ankle.dcm"
filename = get_testdata_files(pass_dicom)[0]
我收到错误
Traceback (most recent call last):
File "t.py", line 4, in <module>
filename = get_testdata_files(pass_dicom)[0]
IndexError: list index out of range
请帮助。
答案 0 :(得分:2)
如果要读取单个DICOM文件,请使用pydicom.data.data_manager.get_files
方法。您需要提供两个参数:base和pattern。根据文档,base是要以字符串形式递归搜索的基本目录,pattern是用于过滤文件的字符串模式(默认为“ *”)。输入基本的DICOM图像所在的完整路径(不包括文件名),并输入图案的DICOM图像名称。结果将是一个只有一个元素的列表,因此请确保在末尾写[0]
。
所以
import pydicom
import pydicom.data
base = "path/to/folder/containing/DICOM/file"
pass_dicom = "CT-MONO2-16-ankle.dcm"
filename= pydicom.data.data_manager.get_files(base,pass_dicom)[0]
答案 1 :(得分:0)
get_testdata_files
在python安装下的lib\site-packages\pydicom\data\test_files
中查找文件。
“ CT-MONO2-16-ankle.dcm”似乎不是提供的示例文件之一(至少我在pydicom 1.1.0中没有此文件)。因此,get_testdata_files返回一个空列表([]
),当您尝试获取第0个项目时,它会引发异常,因为没有第0个项目。
将来,在调试此类错误时,请考虑分解代码。一旦发现get_testdata_files(pass_dicom)[0]
有问题,请尝试get_testdata_files(pass_dicom)
。看看它的结果是什么,为什么。
请记住,pydicom源可在线使用并安装在您自己的计算机上,因此,您始终可以看到(例如)get_testdata_files
正在做什么。