python下递归遍历目录和文件

方法一:递归调用:

import os  
  
def dirlist(path, allfile):  
    filelist =  os.listdir(path)  
  
    for filename in filelist:  
        filepath = os.path.join(path, filename)  
        if os.path.isdir(filepath):  
            dirlist(filepath, allfile)  
        else:  
            allfile.append(filepath)  
    return allfile  
  
print dirlist("/home/yuan/testdir", [])   
from glob import glob
from os import path
def dirlist(parent, allfile):
    pattern = path.join(parent, '*', '*.wav')
    return glob(pattern)


方法二:

os.walk()

 

该函数式穿件一个生成器对象来遍历整棵目录树。
top指定目录的顶级,而topdown是一个布尔值,用于指示由上而下(默认值)还是由下而上来遍历目录。返回的生成器将生成元组(dirpath,dirnames,filenames),其中dirpath是一个字符串,包含通向目录的路径,dirnames是dirpath中所有子目录的一个列表,而filename是dirpath中文件的一个列表,不包括目录。oneerror参数是一个接受单个参数的函数。
         如果处理期间出现任何错误,将使用os.error的是咧来调用此函数。默认行为时忽略错误。如果由上而下地遍历目录,修改dirnames将影响到遍历过程。

#!/user/bin/python  
#!conding=utf8  
  
import os  
g = os.walk("/home/yuan/testdir")  
  
  
for path,d,filelist in g:  
    print d;  
    for filename in filelist:  
        print os.path.join(path, filename)  

 

posted @ 2018-01-24 18:20  sowhat1412  阅读(187)  评论(0编辑  收藏  举报