import os rootDir = 'd:\\assa' for dirName, subdirList, fileList in os.walk(rootDir): print('Folder: %s' % dirName) for fname in fileList: print('\t%s' % fname)
目录结构为:
+test +f1 2.txt +f2 3.txt 1.txt输出结果为:
Folder: d:\Python Code\test 1.txt Folder: d:\Python Code\test\f1 2.txt Folder: d:\Python Code\test\f2 3.txt可以看到这是自顶向下的遍历顺序,如果我们要自底向上,先从最深处的文件开始遍历,可以加上topdown参数:
import os rootDir = 'd:\\Python Code\\test' for dirName, subdirList, fileList in os.walk(rootDir, topdown = False): print('Folder: %s' % dirName) for fname in fileList: print('\t%s' % fname)结果:
Folder: d:\Python Code\test\f1 2.txt Folder: d:\Python Code\test\f2 3.txt Folder: d:\Python Code\test 1.txt如果想要在搜索的时候加上条件?比如跳过第一个文件夹,os.walk也可以做到:
import os rootDir = 'd:\\Python Code\\test' for dirName, subdirList, fileList in os.walk(rootDir): print('Folder: %s' % dirName) for fname in fileList: print('\t%s' % fname) if len(subdirList) > 0: del subdirList[0]结果:
Folder: d:\Python Code\test 1.txt Folder: d:\Python Code\test\f2 3.txt有的同学却不能得到正确的结果,我们可以看看如下代码:
import os rootDir = 'd:\\Python Code\\test' for dirName, subdirList, fileList in os.walk(rootDir): print('Folder: %s' % dirName) for fname in fileList: print('\t%s' % fname) if len(subdirList) > 0: subdirList = subdirList[1:]
结果:
Folder: d:\Python Code\test 1.txt Folder: d:\Python Code\test\f1 2.txt Folder: d:\Python Code\test\f2 3.txt
>>> a=[1,2,3] >>> id(a) 34006600 >>> del a[0] >>> id(a) 34006600 >>> a = a[1:] >>> id(a) 34006024