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