【问题标题】:when i use pydicom, errror printed..IndexError: list index out of range当我使用 pydicom 时,打印错误..IndexError: list index out of range
【发布时间】:2018-08-13 08:02:54
【问题描述】:

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

请帮忙。

【问题讨论】:

  • 请将代码作为实际文本而不是图像提供。
  • 按照@Shai 的建议,我编辑了您的问题以包含代码。请注意,在其他方面这不是一个好问题 - 没有迹象表明您尝试过什么,并且复制代码包含一些无关的元素。在提出下一个问题时,请考虑阅读并申请stackoverflow.com/help/how-to-ask。它将帮助回答者帮助您。

标签: list indexing pydicom


【解决方案1】:

如果您希望读取单个 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]

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 2022-10-09
      • 2020-10-27
      相关资源
      最近更新 更多