1.读取文件
使用os.listdir对文件夹进行遍历返回到path_list中。
由于我需要文件夹中每个文件的第一个文件进行格式转换所以多了个for循环,来获取第二层文件夹。这里path_list中存的是子文件夹名称,也就是[82015015,82019310,......]
path = 'D:/Study/数据集/数据2'
path_list = os.listdir(path)
arr = []
for i in path_list:
path2 = 'D:/Study/数据集/数据2/'+i
path_list2 = os.listdir(path2)
arr.append(path_list2[0])
2.格式转换
使用dicom2nifti.convert_directory进行转换
dicom2nifti.convert_directory(需要转换的文件路径,转换后存放位置,ture,ture)
这里一共有74个数据集需要转换,使用for循环一个一个遍历即可,路径有时候会出问题可以把斜杠换个方向试试,但一定要全部保持一致
for j in range(74):
dicom_directory = 'D:/Study/数据集/数据2/'+path_list[j]+'/'+arr[j] #目标文件路径
#name = dicom_directory.split('\\')[2]
output_folder = 'D:/Study/数据集/数据2/'+ path_list[j] #存储路径
dicom2nifti.convert_directory(dicom_directory, output_folder, compression=True, reorient=True)
最后会转换出很多个压缩包,选最大的一个就是
完整代码如下
import dicom2nifti
import os
import numpy as np
path = 'D:/Study/数据集/数据2'
path_list = os.listdir(path)
#path_list.remove('.DS_Store') # macos中的文件管理文件,默认隐藏,这里可以忽略
print(path_list)
arr = []
for i in path_list:
path2 = 'D:/Study/数据集/数据2/'+i
path_list2 = os.listdir(path2)
arr.append(path_list2[0])
#print(path_list2[0])
print(arr)
for j in range(74):
dicom_directory = 'D:/Study/数据集/数据2/'+path_list[j]+'/'+arr[j] #目标文件路径
#name = dicom_directory.split('\\')[2]
output_folder = 'D:/Study/数据集/数据2/'+ path_list[j] #存储路径
dicom2nifti.convert_directory(dicom_directory, output_folder, compression=True, reorient=True)