glob模块可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。查找文件只用到三个匹配符:”*”, “?”, “[]“。”*”匹配0个或多个字符;”?”匹配单个字符;”[]“匹配指定范围内的字符,如:[0-9]匹配数字。
例子:
import glob
#获取指定目录下的所有图片
print glob.glob(r"E:/Picture/*/*.jpg")
#获取上级目录的所有.py文件
print glob.glob(r'../*.py') #相对路径
现在有这样一个需求,删除过期应用日志,过期时间2天,root目录下所有insert开头的log文件。
代码如下:
<pre name="code" class="python">#!/usr/bin/env python
#'delete old log,20160104'
#author :Andy
import os
import glob
import time
import datetime
class DeleteLogfile(object):
def __init__(self,filename='insert*.log',days=2,path='/root'):
self.__filename = filename
self.__days = days
self.__path =path
def delete(self):
xDate = (datetime.datetime.now() - datetime.timedelta(days = self.__days))
files = glob.glob(self.__path+'/'+self.__filename)
for log in files:
stats=os.stat(log)
lastmodDate = time.localtime(stats[8])
expDate = xDate.strftime('%Y-%m-%d')
expDate = time.strptime(expDate, '%Y-%m-%d')
print log, time.strftime("%m/%d/%y", lastmodDate)
if expDate > lastmodDate:
try:
print 'Removing', log, time.strftime("(older than %m/%d/%y)", expDate)
#os.remove(log)
except OSError:
print 'Could not remove', log
if __name__ == '__main__':
obj = DeleteLogfile()
obj.delete()