python 压缩每周生成的数据文件

为了便于整理部分业务数据,以及存储管理, 写了此脚本.后期如果有需求,再改一下.
 1 #!/usr/bin/env python
 2 #coding:utf8
 3 
 4 import os,sys,time,commands,shutil,glob
 5 import datetime
 6 
 7 
 8 class FileSuo:
 9     
10     def __init__(self,dir):
11         self.dir = dir
12     
13     def getfile(self):
14         for root,dirs,files in os.walk(self.dir):
15             print dirs,'\n',files,'\n'
16     def GetSunday(self):
17         #isoformat = "%Y%m%d"
18         self.lastsunday = datetime.date.today() - datetime.timedelta(days=datetime.date.today().isoweekday())
19         self.tmpstr = self.lastsunday.strftime("%Y,%m,%d")
20         #print self.tmpstr,
21         #得到日期参数
22         self.y = int(self.tmpstr.split(',')[0])
23         self.m = int(self.tmpstr.split(',')[1])
24         self.d = int(self.tmpstr.split(',')[2])
25         return self.y,self.m,self.d,self.lastsunday
26     def Getweek(self):
27         week = {}
28         self.iosformat = "%Y%m%d"
29         self.Sunday = self.GetSunday()[3].strftime(self.iosformat)
30         week['Sun'] = self.Sunday
31         week['Sat'] = (datetime.date(self.GetSunday()[0],self.GetSunday()[1],self.GetSunday()[2])+datetime.timedelta(days=-1)).strftime(self.iosformat)
32         week['Fri'] = (datetime.date(self.GetSunday()[0],self.GetSunday()[1],self.GetSunday()[2])+datetime.timedelta(days=-2)).strftime(self.iosformat)
33         week['Thur'] = (datetime.date(self.GetSunday()[0],self.GetSunday()[1],self.GetSunday()[2])+datetime.timedelta(days=-3)).strftime(self.iosformat)
34         week['Wed'] = (datetime.date(self.GetSunday()[0],self.GetSunday()[1],self.GetSunday()[2])+datetime.timedelta(days=-4)).strftime(self.iosformat)
35         week['Tue'] = (datetime.date(self.GetSunday()[0],self.GetSunday()[1],self.GetSunday()[2])+datetime.timedelta(days=-5)).strftime(self.iosformat)
36         week['Mon'] = (datetime.date(self.GetSunday()[0],self.GetSunday()[1],self.GetSunday()[2])+datetime.timedelta(days=-6)).strftime(self.iosformat)
37 
38         return week
39 
40 
41 
42 if __name__ == "__main__":
43 
44     dir = r'/share/WebService_Device_UserMsg/record/file'
45     f = FileSuo(dir)
46     lastsun = f.GetSunday()[3].strftime("%Y%m%d")
47     lastweekdir = dir + '/' + 'requestRecord%s'%lastsun
48     maillog = dir + '/' + 'requestRecordmail.log'
49     if os.path.exists(dir):
50         print "dir is exits: %s" %dir
51         if not os.path.exists(lastweekdir):
52             os.mkdir(lastweekdir)
53             
54         else:
55             print "lastweekdir is exits: %s" %lastweekdir
56         for k,mf in f.Getweek().items():
57             os.chdir(dir)
58             #print os.popen('ls').readlines()
59             mvfilelist =  glob.glob(r"requestRecord.%s_*"%mf)
60             #print type(mvfilelist)
61             for file in mvfilelist:
62                 #print file,
63                 shutil.move(file,lastweekdir)
64 
65     #count lastweekdir xia file number  
66         def countfile():
67         count = 0
68         return  len(sum([i[2] for i in os.walk(lastweekdir)],[]))
69             
70     print countfile()
71     if os.path.exists(lastweekdir) and countfile() != 0:
72         flog = open(maillog,'w')
73         flog.write(" yasuo %s start date: %s" %(lastweekdir,time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())))
74         flog.write("this file yasuo number is %d" %countfile())
75         os.chdir(dir)   
76         status,result = commands.getstatusoutput('tar zcvf requestRecord%s.tar.gz requestRecord%s' %(lastsun,lastsun))
77         #print status,result
78         if status == 0:
79             flog.write("yasuo %s file is success ,end date: %s"%(lastweekdir,time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())))
80             commands.getstatusoutput('rm -rf requestRecord%s' %lastsun)
81         else:
82             flog.write("yasuo %s file is faild .............")
83 
84         flog.close()
85 
86         
87         
88         
89     #print f.getfile()
90     #print lastsun
91     #print f.Getweek()

 

posted @ 2015-06-24 23:22  shantuwqk  阅读(303)  评论(0编辑  收藏  举报