多文件.mhd转.nii代码运行无报错但未执行转换是什么原因?
问题根因
- 输出路径拼接错误:
files[i]是包含完整源路径的字符串,直接和输出路径拼接后会生成非法嵌套路径,系统无法写入对应文件,自然没有生成结果。 - 输出目录未提前创建:如果
trial目录不存在,SimpleITK的WriteImage接口不会自动创建父目录,会静默写入失败,不会抛出显式报错。 - 可选排查项:可先打印
files变量,确认glob是否正确匹配到了所有.mhd文件。
修复后代码
import glob import os import SimpleITK as sitk my_path = '/content/drive/MyDrive/Datasets/sliver07/sliver07-training-scans/scan/' out_path = '/content/drive/MyDrive/Datasets/sliver07/sliver07-training-scans/trial/' # 自动创建输出目录,已存在时不会报错 os.makedirs(out_path, exist_ok=True) files = glob.glob(os.path.join(my_path, '*.mhd')) for file_path in files: img = sitk.ReadImage(file_path) # 提取不带路径的原始文件名,去掉.mhd后缀 base_name = os.path.basename(file_path).replace('.mhd', '') # 拼接合法输出路径 out_file = os.path.join(out_path, f"{base_name}.nii") sitk.WriteImage(img, out_file)
内容的提问来源于stack exchange,提问作者AMANDEEP KAUR
相关产品推荐
相关产品推荐

