def prepare_to_move_files(self, zip_dict, conf): # if not os.path.exists(conf.classified_folder): os.mkdir(conf.classified_folder) # move_list = [] unzip_list = [] # manager for manager in self.manager_list: ma_path = os.path.join(conf.classified_folder, manager.name) # module for module in manager.module_list: mo_path = os.path.join(ma_path, module.name) # line for line in module.line_list: line_folder = IOHelper.Naming.valid_name( line.name) # line num is not specified li_path = os.path.join(mo_path, line_folder) # ini, server side do not need ini if conf.write_ini: ini = IOHelper.INI() line.report_list = sorted(line.report_list) ini.write(li_path + '\\error_package.ini', line.report_list) # for i, report_id in enumerate(line.report_list): # move small portion of zip files to folder if 0 < conf.num_zip_move <= i: continue # src # dict struct: id->(folder, zip) src = zip_dict[report_id][1] # dst dfn = IOHelper.DumpFileName(conf) zip_fname = dfn.zip_name_from_id(report_id) dst = os.path.join(li_path, zip_fname) # print(dst, len(line.report_list)) # add to move list move_list.append((src, dst)) if 0 <= conf.num_zip_extract <= i: continue # add to unzip list unzip_list.append(dst) return move_list, unzip_list
def process(self, report_id, f_info): f_datetime = None f_size = None if f_info: f_datetime = f_info[0] f_size = f_info[1] # dfn = IOHelper.DumpFileName(self.conf) filename = dfn.zip_name_from_id(report_id) self.zip_path = os.path.join(self.zip_folder, filename) self.unzip_dir = os.path.join(self.unzip_folder, filename.split('.')[0]) dmp_path = os.path.join(self.unzip_dir, self.dump_name) xml_path = os.path.join(self.unzip_dir, self.dump_xml) self.remove_overdue(self.zip_path, self.unzip_dir, xml_path) self.status_valid = True # 下载文件 res = self.try_download(filename, self.zip_path) if not self.status_valid: self.status_valid = True return False if not res: return False # 修改文件时间 res = self.try_modifytime(filename, self.zip_path, f_datetime) if not self.status_valid: self.status_valid = True return False if not res: return False # 解压 res = self.try_unzip(filename, self.zip_path, self.unzip_dir) if not self.status_valid: self.status_valid = True return False if not res: return False # 分析 res = self.try_analyze(filename, self.zip_path, self.unzip_dir, dmp_path, xml_path) if not self.status_valid: self.status_valid = True return False if not res: return False return True
def get_classified_file(self): report_list = [] dfn = IOHelper.DumpFileName(self.conf) for root, dirs, files in os.walk(self.conf.classified_folder): for file in files: if file.startswith( self.conf.folder_prefix) and file.endswith(".zip"): report_list.append(dfn.get_report_id(file.split('.')[0])) write_information('totally %d classified files' % len(report_list)) return sorted(report_list)