You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python加载指定文件夹中的多个nii.gz格式fMRI图像?

问题解决思路

核心问题:文件路径不完整

os.listdir(folder_dir)仅返回文件夹内的文件名,而非完整路径。执行nib.load(filename)时,Python会在当前工作目录查找文件,而非你指定的folder_dir,因此触发找不到文件的错误。

修复步骤:

  1. 拼接完整文件路径
    用os.path.join(folder_dir, filename)将文件夹路径与文件名拼接,确保nibabel能准确定位文件。

  2. 过滤目标文件
    文件夹中可能存在无关文件,添加判断仅处理.nii.gz格式的fMRI图像。

  3. 定义图像保存对象
    代码中final_im未赋值,预处理后需将数据转换为Nibabel图像对象(需保留原图像的空间变换信息affine),才能执行保存操作。

  4. 指定保存路径(可选)
    建议拼接完整保存路径,可将处理后的文件存入原文件夹子目录,避免混乱。

修复后代码示例:

import os
import nibabel as nib

subj = 1
folder_dir = r'C:\Users\myfolder'
# 创建处理后文件的保存目录(不存在则自动创建)
output_dir = os.path.join(folder_dir, 'processed')
os.makedirs(output_dir, exist_ok=True)

for filename in os.listdir(folder_dir):
    # 仅处理nii.gz格式文件
    if filename.endswith('.nii.gz'):
        # 拼接完整文件路径
        file_path = os.path.join(folder_dir, filename)
        img = nib.load(file_path)
        data = img.get_fdata()
    
        ## 写入你的预处理代码 ##
        # 示例:data = custom_preprocess(data)
    
        # 将处理后的数据转换为Nifti图像对象,保留原图像的空间信息和头文件
        final_im = nib.Nifti1Image(data, img.affine, img.header)
        
        # 拼接保存路径并保存
        save_name = f"{subj}.nii"
        save_path = os.path.join(output_dir, save_name)
        final_im.save(save_path)
    
        subj += 1

额外提示:

  • 可用print(os.getcwd())查看当前工作目录,确认为何直接用文件名无法找到文件。
  • 若想压缩保存文件,可将save_name改为f"{subj}.nii.gz",nibabel会自动处理压缩逻辑。

内容的提问来源于stack exchange,提问作者Ana Gabriela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:26:06