0

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

请帮忙。

4

2 回答 2

5

如果您要读取单个 DICOM 文件,请使用pydicom.data.data_manager.get_files方法。您需要提供两个参数:base 和 pattern。根据文档,base 是作为字符串递归搜索的基本目录,而 pattern 是用于过滤文件的字符串模式(默认为“*”)。输入 DICOM 图像所在位置的完整路径(不包括文件名)作为 base 并输入 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]
于 2019-08-27T00:52:47.893 回答
0

get_testdata_fileslib\site-packages\pydicom\data\test_files在您的 python 安装下查找文件。

“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正在尝试做什么。

于 2018-08-24T12:49:52.280 回答