# -*- coding:utf-8 -*- """ @author: yq @time: 2023/12/28 @desc: 各种工具类 """ import datetime import inspect import os from json import JSONEncoder 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') class f_clazz_to_json(JSONEncoder): def default(self, o): return o.__dict__