当我使用pydicom时,打印错误。.IndexError:列表索引超出范围

时间:2018-08-13 08:02:54

标签: list indexing pydicom

使用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

请帮助。

2 个答案:

答案 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正在做什么。