我有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 路径:
返回带有正向 (/) 的路径的字符串表示形式 斜线。
顺便说一句,遍历所有路径的pythonic方式看起来更像这样:
for path_obj in data.glob('**/*.dcm'):
record = dicom.read_file(str(path_obj))