file_util.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import base64
  2. import os
  3. import shutil
  4. import uuid
  5. def get_ext(filename: str) -> str:
  6. if not filename:
  7. return ""
  8. pos = filename.rfind(".")
  9. return filename[pos + 1:] if pos > -1 else ""
  10. def get_short_filename(filename: str) -> str:
  11. if not filename:
  12. return ""
  13. return os.path.basename(filename)
  14. def remove_ext(filename: str) -> str:
  15. if not filename:
  16. return filename
  17. pos = filename.rfind(".")
  18. return filename[:pos] if pos > -1 else filename
  19. def is_image(filename: str) -> bool:
  20. return get_ext(filename).lower() in ("jpg", "jpeg", "png", "bmp")
  21. def is_video(filename: str) -> bool:
  22. return get_ext(filename).lower() in ("mp4", "mov")
  23. def generate_unique_filename(original: str) -> str:
  24. if not original:
  25. return str(uuid.uuid4())
  26. pos = original.rfind(".")
  27. if pos >= 0:
  28. ext = original[pos:]
  29. return str(uuid.uuid4()) + ext
  30. return str(uuid.uuid4())
  31. def base64_content(filepath: str) -> str:
  32. with open(filepath, "rb") as f:
  33. return base64.b64encode(f.read()).decode("utf-8")
  34. def base64_to_file(content: str, filepath: str):
  35. os.makedirs(os.path.dirname(filepath), exist_ok=True)
  36. with open(filepath, "wb") as f:
  37. f.write(base64.b64decode(content))
  38. def copy_file(src: str, dst: str):
  39. os.makedirs(os.path.dirname(dst), exist_ok=True)
  40. shutil.copy2(src, dst)
  41. def copy_directory(src: str, dst: str):
  42. if os.path.exists(dst):
  43. shutil.rmtree(dst)
  44. shutil.copytree(src, dst)
  45. def delete_directory(path: str):
  46. if os.path.isdir(path):
  47. shutil.rmtree(path, ignore_errors=True)
  48. def move_file(src: str, dst: str):
  49. os.makedirs(os.path.dirname(dst), exist_ok=True)
  50. shutil.move(src, dst)
  51. def force_mkdir(path: str):
  52. os.makedirs(path, exist_ok=True)
  53. def write_bytes(filepath: str, data: bytes):
  54. os.makedirs(os.path.dirname(filepath), exist_ok=True)
  55. with open(filepath, "wb") as f:
  56. f.write(data)