store.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import os
  2. import pandas as pd
  3. from log import PPLogger
  4. from setting import CSV_FILENAME, CSV_DIR
  5. from threading import Lock
  6. class WuBaStore:
  7. def __init__(self, method):
  8. """
  9. 持久化
  10. :param method: 持久化方式 :'csv',,,
  11. """
  12. self.method = method
  13. self.logger = PPLogger(name='store')
  14. self.logger.setup_logger()
  15. self.lock = Lock()
  16. def run(self, *args):
  17. if self.method == 'csv':
  18. self.to_csv(args[0])
  19. else:
  20. pass
  21. def to_csv(self, data_dict: dict, file_dir: str = CSV_DIR, file_name: str = CSV_FILENAME):
  22. if not os.path.exists(file_dir):
  23. os.mkdir(file_dir)
  24. try:
  25. file_path = os.path.join(file_dir, file_name)
  26. data = pd.DataFrame([data_dict])
  27. with self.lock:
  28. if not os.path.exists(file_path):
  29. data.to_csv(path_or_buf=file_path, index=False, header=True, encoding='utf8')
  30. else:
  31. data.to_csv(path_or_buf=file_path, index=False, header=False, encoding='utf8', mode='a')
  32. except Exception as e:
  33. self.logger.error(e)