【问题标题】:Read DICOM objects from PosixPath, Python从 PosixPath、Python 读取 DICOM 对象
【发布时间】:2018-03-04 15:46:26
【问题描述】:

我有 20,000 个 PosixPath,每个都指向一个不同的 .dcm 对象。我需要一一阅读 .dcm 对象。到目前为止,这是我的代码:

from pathlib import Path
import glob
import dicom
data = Path('/data')
path_to_dcm_objects = list(data.glob('**/*.dcm'))
for i in len(path_to_dcm_objects):
    record = dicom.read_file(path_to_dcm_objects[i])

当我想使用其 PosixPath 读取 .dcm 文件时出现错误:

AttributeError: 'PosixPath' object has no attribute 'read'

任何帮助将不胜感激。

【问题讨论】:

  • 你确定这不是import pydicom的意思吗?
  • @MikeMüller 我用pip install pydicom 安装。然后我使用import dicom 来使用该模块。系统无法识别import pydicom
  • 我明白了 此代码使用的是旧版本的 pydicom,该版本自 2017 年 1 月起不再维护。您可以通过从 PyPI 安装 pydicom 来访问新的 pydicom 功能和 API。有关详细信息,请参阅 pydicom.readthedocs.org 上的“过渡到 pydicom 1.x”部分。
  • @MikeMüller 我会检查一下。非常感谢!

标签: python path pydicom


【解决方案1】:

dicom.read_file() 需要打开的文件对象或路径字符串,而不是 Path 实例。如果它不是字符串,则认为它是一个打开的文件并尝试从中读取。

Path 实例转换为带有str(path_object) 的字符串:

for i in len(path_to_dcm_objects):
    record = dicom.read_file(str(path_to_dcm_objects[i]))

Path对象转字符串的帮助:

返回路径的字符串表示形式,适用于 传递给系统调用。

你也可以使用:

 path_object.as_posix()

这会给你一个 Posix 路径:

用正向(/)返回路径的字符串表示 斜线。

顺便说一句,遍历所有路径的 Python 方式看起来更像这样:

for path_obj in data.glob('**/*.dcm'):
    record = dicom.read_file(str(path_obj))

【讨论】:

  • 正是我想要的!我很感激!
猜你喜欢
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 2016-07-07
  • 2013-03-06
相关资源
最近更新 更多