首页 > 代码库 > 文件目录遍历

文件目录遍历

 

os.walk()

os.walk(top,topdown=True,onerror=None)

 

top:需要遍历的顶级目录路径

topdown:默认值“True”,首先返回顶级目录下的文件,然后再遍历子目录中的文件。"False":先遍历子目录中的文件,然后再返回顶级目录下的文件。

onerror默认值"None",忽略文件遍历时的错误。

 

返回一个三元tupple(dirpath, dirnames, filenames),第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。

dirpath:string,目录的路径。

dirnames:list,dirpath下所有子目录的名字。

filename:list,非目录文件的名字。

这些名字不包含路径信息,如果需要得到全路径,需要使用os.path.join(path, name),通过for循环遍历所有文件。

 

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

import os

for path,dirs,filelist in os.walk(rD:\用户目录\下载):
    for filename in filelist:
        print(os.path.join(path,filename))

 

 

遍历文件夹并删除特定格式文件

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os

def del_files(path):
    for root , dirs, files in os.walk(path):
        for name in files:
            if name.endswith(".tmp"):
                os.remove(os.path.join(root, name))
  print ("Delete File: " + os.path.join(root, name))

if __name__ == "__main__":
    path = /tmp
    del_files(path)

 

 

 

获取文件夹大小

os.path.getsize,参数是文件路径。

 

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

import os
from os.path import join, getsize

def getdirsize(dir):
    size = 0
    for path, dirs, files in os.walk(dir):
        for filename in files:
            size += getsize(os.path.join(path, filename))
            print(os.path.join(path, filename))
    return size

if __name__ == __main__:
    filesize = getdirsize(rD:\用户目录\下载)
    print(Ther are %.1f % (filesize/1024/1024), Mbytes.)

 

文件目录遍历