Python ---- 找出'/mnt'目录下最大(最早)的十个文件

 今天看了一下Python自动化的书,里边儿有个这个需求,尝试做了一下,感觉还凑合= =,记录一下我的Python自动化学习过程;

先定义一个通用函数,可被循环;(其实上一篇博客里就有)

#!/usr/bin/python3

import os, fnmatch

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=['*'],exclude_dirs=[]):
      for root,dirnames,filenames in os.walk(root):
           for filename in filenames:
                if is_file_match(filename, patterns):
                   yield os.path.join()
           for d in exclude_dirs:
               if d in dirnames:
                  dirname.remove(d)

就可以使用ipython啦或者再写一个文件来解决:

import file,os

def big_file():
    big = {}
    for name in file.find_specific_files('/mnt'):
        big[name] = os.path.getsize(name)
    big = sorted(big.items(),key=lambda x:x[1],reverse=True)[:10]

    for i, t in enumerate(big, 1):
        print(i, t[0], t[1])

def old_file():
    old = {}
    for name in file.find_specific_files('/mnt'):
        old[name] = os.path.getmtime(name)
    old = sorted(old.items(),key=lambda x:x[1],reverse=True)[:10]
    for i, t in enumerate(old, 1):
        print(i, t[0], t[1])
big_file()
old_file()

 

以下是运行结果