def handle(self,folder,period, remove_files, archive_mask, *args,**kwargs): self.period_sec = period * 24 * 60 * 60 self.filtered_files = [] if folder: folder = os.path.abspath(folder) else: assert my_settings.FILE, 'You have to defile folder attr, settings.UCSVLOG_CLEAR_OLD_FOLDER or UCSVLOG_FILE' #getting search folder from FILE settings abs_folder = os.path.abspath(my_settings.FILE) abs_folder_els = [] for el in abs_folder.split('/')[1:]: if el.find('%') + 1: break abs_folder_els.append(el) folder = '/' + '/'.join(abs_folder_els) self.abs_folder = folder os.path.walk(folder,self.walk_directory,None) if not self.filtered_files: glog.log('nothing to do') return if remove_files: self.remove_filtered_files() return if archive_mask: self.archive_filtered_files(archive_mask) self.remove_filtered_files() return
def walk_directory(self,args,dirname,names): for filename in names: full_name = os.path.join(dirname, filename) if not os.path.isfile(full_name): continue if ( time.time() - os.path.getctime(full_name) ) > self.period_sec: glog.log(['walk',full_name,'Y']) self.filtered_files.append(full_name) else: glog.log(['walk',full_name,'N'])
def remove_filtered_files(self): for item in self.filtered_files: glog.log(['unlink',item])