前言

现在磁共振数据的被试量越来越多,所扫描的图像也就更多,量小的几十个,量大的成百上千,而且不论是DPABI、cat12、SPM12还是其他工具包,都需要将数据整理成合适的格式才能方便做数据处理,手动处理必将费时费力,还容易出现差错,此时用脚本编代码批处理便是最好的选择。初用python语言,感觉良好,用它来做文件的批处理的确很强大,简单明了,所以这个系列写出来便是为了记录自己的脚本,害怕那天换电脑了,这些东西便不存在了,多麻烦,这对于自己来说,未来都是宝藏,对于各位读者来说也是提供便利,小编的脚本主要围绕脑科学方面的数据进行处理,希望对读此文的读者有所增益。

一、代码实现功能介绍

小编的的.nii文件本来是都在一个文件夹中的,如下图所示:

python如何将文件复制到剪切板_pycharm


想要实现的功能便是提取这些nii文件对应的被试编号sub-xxxxx,作为对应的被试文件夹名,并将nii文件移动到对应被试编号的文件中,做好这个之后就能放到FunImg文件夹中直接用DPABI进行预处理了,程序运行结果如下两图所示:

python如何将文件复制到剪切板_编程语言_02


python如何将文件复制到剪切板_编程语言_03

二、代码块简介

第一步:读取文件名

import os
import shutil

DIR = "D:\\DATA\\test"


def Movefile(DIR):                                                     # 定义函数
    j = 0
    for root1, path1, filename in os.walk(DIR):
        for i in range(len(filename)):
            if os.path.splitext(filename[i])[1] == '.nii':      # 这里注意filename是个元组,splitext方法的时候只能是字符串,从后往前查找”.“
                j += 1
                dir_name = filename[i].split('_')[0]            # split是从前往后查找目标字符用来分割字符串
                print(dir_name)

第二步:设定目标文件路径

dir_path = os.path.join(DIR, dir_name)              # 在目标文件夹下添加
                if os.path.exists(dir_path) == 0:                   # 如果该文件不存在,则创建文件,反之不创建
                    os.mkdir(dir_path)
                old_path = os.path.join(DIR, filename[i])       # 定义目标文件路径
                new_path = os.path.join(dir_path, filename[i])  # 定义目标文件存放路径

第三步:复制文件,若想直接移动文件,可将copyfile改成move

shutil.copyfile(old_path, new_path)                     # 将目标文件移动到存放路径中

    print("总共有", j, "图层文件被复制!")

第四步:调用函数,运行

Movefile(DIR)                                                          # 调用自定义函数

PS:
若有任何问题欢迎指出,或者有更加简单的处理方式也欢迎提出建议一起分享。