utils.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # -*- coding:utf-8 -*-
  2. """
  3. @author: yq
  4. @time: 2023/12/28
  5. @desc: 各种工具类
  6. """
  7. import datetime
  8. import inspect
  9. import os
  10. from json import JSONEncoder
  11. import dataframe_image as dfi
  12. import pandas as pd
  13. import pytz
  14. from config import BaseConfig
  15. def f_format_float(num: float, n=3):
  16. return f"{num: .{n}f}"
  17. def f_get_date(offset: int = 0, connect: str = "-") -> str:
  18. current_date = datetime.datetime.now(pytz.timezone("Asia/Shanghai")).date() + datetime.timedelta(days=offset)
  19. return current_date.strftime(f"%Y{connect}%m{connect}%d")
  20. def f_get_datetime(offset: int = 0, connect: str = "_") -> str:
  21. current_date = datetime.datetime.now(pytz.timezone("Asia/Shanghai")) + datetime.timedelta(days=offset)
  22. return current_date.strftime(f"%Y{connect}%m{connect}%d{connect}%H{connect}%M{connect}%S")
  23. def f_get_clazz_in_module(module):
  24. """
  25. 获取包下的所有类
  26. """
  27. classes = []
  28. for name, member in inspect.getmembers(module):
  29. if inspect.isclass(member):
  30. classes.append(member)
  31. return classes
  32. def f_save_train_df(file_name: str, df: pd.DataFrame):
  33. file_path = os.path.join(BaseConfig.train_path, file_name)
  34. df.to_excel(f"{file_path}.xlsx", index=False)
  35. def f_df_to_image(df, filename, fontsize=12):
  36. dfi.export(obj=df, filename=filename, fontsize=fontsize, table_conversion='matplotlib')
  37. class f_clazz_to_json(JSONEncoder):
  38. def default(self, o):
  39. return o.__dict__