从PosixPath,Python中读取DICOM对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从PosixPath,Python中读取DICOM对象相关的知识,希望对你有一定的参考价值。
我有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
实例。如果它不是字符串,则认为它是一个打开的文件并尝试从中读取。
使用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路径:
使用forward(/)斜杠返回路径的字符串表示形式。
顺便说一下,迭代所有路径的pythonic方式看起来更像是这样:
for path_obj in data.glob('**/*.dcm'):
record = dicom.read_file(str(path_obj))
以上是关于从PosixPath,Python中读取DICOM对象的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:“PosixPath”类型的参数不可迭代