DiskReaderWriter.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import os
  2. from magic_pdf.io.AbsReaderWriter import AbsReaderWriter
  3. from loguru import logger
  4. class DiskReaderWriter(AbsReaderWriter):
  5. def __init__(self, parent_path, encoding='utf-8'):
  6. self.path = parent_path
  7. self.encoding = encoding
  8. def read(self, mode="text"):
  9. if not os.path.exists(self.path):
  10. logger.error(f"文件 {self.path} 不存在")
  11. raise Exception(f"文件 {self.path} 不存在")
  12. if mode == "text":
  13. with open(self.path, 'r', encoding = self.encoding) as f:
  14. return f.read()
  15. elif mode == "binary":
  16. with open(self.path, 'rb') as f:
  17. return f.read()
  18. else:
  19. raise ValueError("Invalid mode. Use 'text' or 'binary'.")
  20. def write(self, data, mode="text"):
  21. if mode == "text":
  22. with open(self.path, 'w', encoding=self.encoding) as f:
  23. f.write(data)
  24. logger.info(f"内容已成功写入 {self.path}")
  25. elif mode == "binary":
  26. with open(self.path, 'wb') as f:
  27. f.write(data)
  28. logger.info(f"内容已成功写入 {self.path}")
  29. else:
  30. raise ValueError("Invalid mode. Use 'text' or 'binary'.")
  31. # 使用示例
  32. if __name__ == "__main__":
  33. file_path = "example.txt"
  34. drw = DiskReaderWriter(file_path)
  35. # 写入内容到文件
  36. drw.write(b"Hello, World!", mode="binary")
  37. # 从文件读取内容
  38. content = drw.read()
  39. if content:
  40. logger.info(f"从 {file_path} 读取的内容: {content}")