123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- # -*- 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 = '<div style="display:flex; justify-content:space-around;">'
- if title != "":
- html_str += '<h3>{}</h3>'.format(title)
- for image_path in image_path_list:
- html_str += f'<img src="data:image/png;base64,{_f_image_to_base64(image_path)}" style="width:{width}px;"/>'
- html_str += '</div>'
- if not (image_path_list2 is None or len(image_path_list2) == 0):
- html_str += '<div style="display:flex; justify-content:space-around;">'
- if title2 != "":
- html_str += '<h3>{}</h3>'.format(title2)
- for image_path in image_path_list2:
- html_str += f'<img src="data:image/png;base64,{_f_image_to_base64(image_path)}" style="width:{width}px;"/>'
- html_str += '</div>'
- display.display(display.HTML(html_str))
- class f_clazz_to_json(JSONEncoder):
- def default(self, o):
- return o.__dict__
|