Python os.walk的用法与举例

来源:互联网 发布:旅行用翻译软件 编辑:程序博客网 时间:2024/06/05 08:36

本文转自: http://blog.csdn.net/bagboy_taobao_com/article/details/8938126

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']  

你也可以这样

    #!/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']  


通过for循环即可完成目录的递归.

你还可以这样

    #!/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  

遍历所有文件,最后还是觉得这个方法可靠
# List all directorydef iterate_directory(path):    path = r'C:\Users\wenhuifu\Desktop'    roots = []    for roots_of_current_dir,folders,files in os.walk(path):        roots.append(roots_of_current_dir)    return roots
# List all files in current directory
def iterate_all_files(path):    files_directory = []    for root in iterate_directory(path):        #print(root)        list_all_file = os.listdir(root)        for file in list_all_file:            full_path = os.path.join(root,file)            if os.path.isfile(full_path):                files_directory.append(full_path)    return files_directory
原创粉丝点击