os.walk方法,主要用来遍历一个目录内各个子目录和子文件。
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).
通过for循环自动完成递归枚举
例如:
F:\aaa 目录是这样的文件目录结构
F:\aaa
|——–1.txt
|——–2.txt
|——–3.txt
|——–4
|——-5.txt
|——-6.txt
|——-7.txt
分别打印各个参数的实际值
#!/usr/bin/env python # 2.py # use UTF-8 # Python 3.3.0 # os.walk()的使用 import os # 枚举dirPath目录下的所有文件 def main(): #begin fileDir = "F:" + os.sep + "aaa" # 查找F:\aaa 目录下 for root, dirs, files in os.walk(fileDir): #begin print(root) print(dirs) print(files) #end os.system("pause") #end if __name__ == '__main__': #begin main() #end # 输出 # F:\aaa # ['4'] # ['1.txt', '2.txt', '3.txt'] # F:\aaa\4 # [] # ['5.txt', '6.txt', '7.txt']
你也可以这样,用元组a,通过for循环即可完成目录的递归.
#!/usr/bin/env python # 3.py # use UTF-8 # Python 3.3.0 # os.walk()的使用 import os # 枚举dirPath目录下的所有文件 def main(): #begin fileDir = "F:" + os.sep + "aaa" # 查找F:\aaa 目录下 for a in os.walk(fileDir): #begin print(a[0]) print(a[1]) print(a[2]) #end os.system("pause") #end if __name__ == '__main__': #begin main() #end # 输出 # F:\aaa # ['4'] # ['1.txt', '2.txt', '3.txt'] # F:\aaa\4 # [] # ['5.txt', '6.txt', '7.txt']
你还可以这样,先打印目录,再打印各个文件
#!/usr/bin/env python # 2.py # use UTF-8 # Python 3.3.0 # os.walk()的使用 import os # 枚举dirPath目录下的所有文件 def main(): #begin fileDir = "F:" + os.sep + "aaa" # 查找F:\aaa 目录下 for root, dirs, files in os.walk(fileDir): #begin for dir in dirs: #begin print(os.path.join(root, dir)) #end for file in files: #begin print(os.path.join(root, file)) #end #end os.system("pause") #end if __name__ == '__main__': #begin main() #end # 输出 # F:\aaa\4 # F:\aaa\1.txt # F:\aaa\2.txt # F:\aaa\3.txt # F:\aaa\4\5.txt # F:\aaa\4\6.txt # F:\aaa\4\7.txt