Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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)