os.listdir(path) 只能获取某个路径下所有的文件名字的list,而有时候需要获得该路径下所有的文件的绝对路径,一种简单的方法是:
root = '/media/Disk/ShanghaiTech/'
path = os.path.join(root, 'part_A_final', 'train_data', 'images')
filenames = os.listdir(path)
pathnames = [os.path.join(path, filename) for filename in filenames]
还有一种办法是利用os.walk() 返回一个generator三元组
generator意味着是边循环边组成list,用完释放不占内存啥的。
而且是以迭代的方式,会遍历所有子文件夹的下面的所有文件,一层层迭代下去。
而在代码中使用,直接一个for就可以取出来,和组成的list里循环没什么区别,挺优雅的~
root = '/media/Disk/ShanghaiTech/'
path = os.path.join(root, 'part_A_final', 'train_data', 'images')
pathnames = []
for (dirpath, dirnames, filenames) in os.walk(path):
for filename in filenames:
pathnames += [os.path.join(dirpath, filename)]
print pathnames
最后输出结果是一样的: