python 之 os.walk() 和 os.path.join() 和 glob.glob()

1、用法:os.walk(top, topdown = True, onerror = None, followlinks = False)

返回:得到一个三元tupple(dirpath, dirnames, filenames), 

第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。

dirpath 是一个string,代表目录的路径,

dirnames 是一个list,包含了dirpath下所有子目录的名字。

filenames 是一个list,包含了非目录文件的名字。

这些名字不包含路径信息,如果需要得到全路径,需要使用os.path.join(dirpath, name).

自下而上的深度优先遍历

>>import os
>>input_path = "G:/brats17-master/Brats17/HGG"
>>all_paths = []
>>for roots, dirs, files in os.walk(input_path):
>>  #print("root = ", roots, "dir= ", dirs, "file = ", files)
>>  all_paths.append(roots)
>>  print("all_paths = ", all_paths)

all_paths =  ['G:/brats17-master/Brats17/HGG', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_10_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_11_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_12_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_13_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_14_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_17_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_18_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_19_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_20_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_21_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_22_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_23_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_25_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_26_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_27_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_3_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_4_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_5_1', 'G:/brats17-master/Brats17/HGG\\Brats17_2013_7_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AAB_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AAG_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AAL_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AAP_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ABB_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ABE_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ABM_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ABN_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ABO_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ABY_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ALN_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ALU_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ALX_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AME_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AMH_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ANG_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ANI_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ANP_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_ANZ_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AOD_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AOH_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AOO_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AOP_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AOZ_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_APR_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_APY_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_APZ_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AQA_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AQD_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AQG_1', 'G:/brats17-master/Brats17/HGG\\Brats17_CBICA_AQJ_1']

2、用法os.path.join(path1, path2, ...)

返回:多个路径拼接组合

>>import os
>>input_path = "G:/brats17-master/Brats17/HGG/Brats17_2013_3_1"
>>print(os.path.join(input_path, './_seg.nii.gz'))

G:/brats17-master/Brats17/HGG/Brats17_2013_3_1\./_seg.nii.gz

用法:glob.glob(pathname)

返回:匹配的文件路径列表,list类型

#获取指定目录下_seg.nii.gz文件
>>import glob
>>input_path = "G:/brats17-master/Brats17/HGG/Brats17_2013_3_1/*_seg.nii.gz"
>>print(glob.glob(input_path))

['G:/brats17-master/Brats17/HGG/Brats17_2013_3_1\\Brats17_2013_3_1_seg.nii.gz']

#获取当前文件夹下.py文件,包括当前正在执行的文件
>>print(glob.glob(r'./*.py'))

['.\\test_basename.py', '.\\test_range.py', '.\\test_walk.py']

猜你喜欢

转载自blog.csdn.net/weixin_42338058/article/details/83869146