python - 从 PosixPath、Python 读取 DICOM 对象

标签 python path pydicom

我有 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'

如有任何帮助,我们将不胜感激。

最佳答案

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

使用 str(path_object)Path 实例转换为字符串:

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

Path 对象转换为字符串的帮助:

Return the string representation of the path, suitable for passing to system calls.

您还可以使用:

 path_object.as_posix()

这给你一个 Posix 路径:

Return the string representation of the path with forward (/) slashes.

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

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

关于python - 从 PosixPath、Python 读取 DICOM 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49097181/

相关文章:

python - Dicom 到 PNG 转换 - 输出图像全黑

dicom - 如何获取在 C-MOVE 调用期间未成功检索的所有 SOP 实例的列表?

python - 正则表达式匹配的数量

javascript - 通过在 JavaScript 中给出硬编码路径来获取文件对象

ios - 快速更新 addQuadCurve 控制点?

javascript - 当 Electron 应用程序打包在 asar 中时使用 require

python - 如何将传输语法uid添加到数据集的filemeta

python - pydub 可以知道文件是否曾经播放过吗?

python - 使用 pygtk 如何制作简单的全屏幻灯片放映

具有混合数据类型(文本、数字、分类)的 Python scikit-learn 分类