# -*- coding:utf-8 -*- """ @author: yq @time: 2023/12/28 @desc: 各种工具类 """ import base64 import datetime import inspect import os from json import JSONEncoder from typing import Union import dataframe_image as dfi import pandas as pd import pytz from config import BaseConfig def f_format_float(num: float, n=3): return f"{num: .{n}f}" def f_get_date(offset: int = 0, connect: str = "-") -> str: current_date = datetime.datetime.now(pytz.timezone("Asia/Shanghai")).date() + datetime.timedelta(days=offset) return current_date.strftime(f"%Y{connect}%m{connect}%d") def f_get_datetime(offset: int = 0, connect: str = "_") -> str: current_date = datetime.datetime.now(pytz.timezone("Asia/Shanghai")) + datetime.timedelta(days=offset) return current_date.strftime(f"%Y{connect}%m{connect}%d{connect}%H{connect}%M{connect}%S") def f_get_clazz_in_module(module): """ 获取包下的所有类 """ classes = [] for name, member in inspect.getmembers(module): if inspect.isclass(member): classes.append(member) return classes def f_save_train_df(file_name: str, df: pd.DataFrame): file_path = os.path.join(BaseConfig.train_path, file_name) df.to_excel(f"{file_path}.xlsx", index=False) def f_df_to_image(df, filename, fontsize=12): dfi.export(obj=df, filename=filename, fontsize=fontsize, table_conversion='matplotlib') def _f_image_to_base64(image_path): with open(image_path, "rb") as image_file: img_str = base64.b64encode(image_file.read()) return img_str.decode("utf-8") def f_display_images_by_side(image_path_list, display, title: str = "", width: int = 500, image_path_list2: Union[list, None] = None, title2: str = "", ): if isinstance(image_path_list, str): image_path_list = [image_path_list] html_str = '