模块os中的walk()函数可以遍历文件夹下所有的文件。
该函数可以得到一个三元tupple(dirpath, dirnames, filenames).
参数含义:
- dirpath:string,代表目录的路径;
- dirnames:list,包含了当前dirpath路径下所有的子目录名字(不包含目录路径);
- filenames:list,包含了当前dirpath路径下所有的非目录子文件的名字(不包含目录路径)。
注意,dirnames和filenames均不包含路径信息,如需完整路径,可使用os.path.join(dirpath, dirnames)
下面给出代码;
当需要特定类型的文件时,代码如下:
os.listdir()函数得到的是仅当前路径下的文件名,不包括子目录中的文件,所有需要使用递归的方法得到全部文件名。
直接给出代码,函数将返回类型为‘.jpeg’个文件名:
- # -*- coding: utf-8 -*-
- import os
- def Test1(rootDir):
- list_dirs = os.walk(rootDir)
- for root, dirs, files in list_dirs:
- for d in dirs:
- print os.path.join(root, d)
- for f in files:
- print os.path.join(root, f)
- # -*- coding: utf-8 -*-
- import os
- def Test2(rootDir):
- for lists in os.listdir(rootDir):
- path = os.path.join(rootDir, lists)
- print path
- if os.path.isdir(path):
- Test2(path)
- E:\TEST
- │--A
- │ │--A-A
- │ │ │--A-A-A.txt
- │ │--A-B.txt
- │ │--A-C
- │ │ │--A-B-A.txt
- │ │--A-D.txt
- │--B.txt
- │--C
- │ │--C-A.txt
- │ │--C-B.txt
- │--D.txt
- │--E
- Test1('E:\TEST')
- print '======================================='
- Test2('E:\TEST')
- >>>
- E:\TEST\A
- E:\TEST\C
- E:\TEST\E
- E:\TEST\B.txt
- E:\TEST\D.txt
- E:\TEST\A\A-A
- E:\TEST\A\A-C
- E:\TEST\A\A-B.txt
- E:\TEST\A\A-D.txt
- E:\TEST\A\A-A\A-A-A.txt
- E:\TEST\A\A-C\A-B-A.txt
- E:\TEST\C\C-A.txt
- E:\TEST\C\C-B.txt
- =======================================
- E:\TEST\A
- E:\TEST\A\A-A
- E:\TEST\A\A-A\A-A-A.txt
- E:\TEST\A\A-B.txt
- E:\TEST\A\A-C
- E:\TEST\A\A-C\A-B-A.txt
- E:\TEST\A\A-D.txt
- E:\TEST\B.txt
- E:\TEST\C
- E:\TEST\C\C-A.txt
- E:\TEST\C\C-B.txt
- E:\TEST\D.txt
- E:\TEST\E
- >>>
- def Test3(rootDir, level=1):
- if level==1: print rootDir
- for lists in os.listdir(rootDir):
- path = os.path.join(rootDir, lists)
- print '│ '*(level-1)+'│--'+lists
- if os.path.isdir(path):
- Test3(path, level+1)