python基础之循环遍历文件夹

os.walk()的使用:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

os.walk()会产生一个三元组:(文件夹路径,文件夹名字,文件名)

os.walk 的返回值是一个生成器(generator),也就是说我们需要不断的遍历它,来获得所有的内容。
每次遍历的对象都是返回的是一个三元组(root,dirs,files)

得到当前目录下所有以py结尾的文件,并输出最新修改的五个文件

# -*- coding: utf-8 -*-
import os,sys
import fnmatch
import time
def is_file_match(filename, patterns):
    for pattern in patterns:
        if fnmatch.fnmatch(filename, pattern):
            return True
    return False
def find_specific_files(root, patterns=['*.py'], exclude_dirs=[]):
    for root, dirnames, filenames in os.walk(root):
        for filename in filenames:
            if is_file_match(filename, patterns):
                yield os.path.join(root, filename)

        for d in exclude_dirs:
            if d in dirnames:
                dirnames.remove(d)
d=input('输入文件目录:')
timelist=[]
for item in find_specific_files(d):
    timelist.append([item,os.path.getmtime(item)])
result=sorted(timelist, key=lambda list:list[1],reverse=True)[:5]
for a in result:
    print(a[0],time.ctime(a[1]))

你可能感兴趣的:(python)