import os
import re # 设定图像文件所在的路径
img_path = './2d/images/' #需修改路径
# 获取该路径下的所有文件名
img_list = os.listdir(img_path) # 过滤出以.nii结尾的文件名
nii_list = [f for f in img_list if f.endswith('.nii')] # 使用正则表达式从文件名中提取数字部分,并转换为整数
# 如果找不到数字,则抛出一个异常
def extract_number_from_filename(filename): match = re.search(r'(\d+)_', filename) if match: return int(match.group(1)) else: raise ValueError(f"No number found in filename: {filename}") # 存储能够成功提取数字的文件名和对应的数字(用于排序)
sortable_files = [] # 尝试提取每个文件名中的数字,并添加到sortable_files列表中
for nii_file in nii_list: try: number = extract_number_from_filename(nii_file) sortable_files.append((number, nii_file)) except ValueError as e: print(e) # 打印错误消息,但也可以选择记录日志或采取其他措施 # 对元组列表进行排序,元组的第一个元素是数字,第二个元素是文件名
sortable_files.sort() # 提取排序后的文件名
sorted_nii_filenames = [filename for _, filename in sortable_files] # 打印排序后的文件名列表(可选)
print('排序后的文件名列表: ', sorted_nii_filenames) # 将排序后的文件名写入文本文件
with open('testImagelist.txt', 'w') as f: for img_name in sorted_nii_filenames: f.write(img_name + '\n')
本案例使用的是CT影像的nii格式数据集,代码实现过程中可根据实际情况调整!
效果: