51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
import os
|
|
from pathlib import Path
|
|
from typing import List
|
|
|
|
|
|
class FileUtils:
|
|
@staticmethod
|
|
def file_path_extend(media_path: str, extend: str) -> str:
|
|
media_filename = os.path.basename(media_path)
|
|
media_dir = os.path.dirname(media_path) + '/'
|
|
filenames = media_filename.split('.')
|
|
filenames[0] = f"{filenames[0]}_{extend}"
|
|
extend_filename = '.'.join(filenames)
|
|
return os.path.join(media_dir, extend_filename)
|
|
|
|
@staticmethod
|
|
def file_path_replace_root_prefix(media_path: str, prefix: str, depth: int = 1) -> str:
|
|
media_dirs = media_path.split('/')
|
|
if depth >= len(media_dirs):
|
|
raise IndexError("Depth is out of range")
|
|
media_dir_prefix = prefix + '/'.join(media_dirs[depth:])
|
|
return media_dir_prefix
|
|
|
|
@staticmethod
|
|
def file_path_change_extension(media_path: str, extension: str) -> str:
|
|
media_filename = os.path.basename(media_path)
|
|
media_dir = os.path.dirname(media_path) + "/"
|
|
filenames = media_filename.split(".")
|
|
filenames[-1] = extension
|
|
filename = ".".join(filenames)
|
|
return os.path.join(media_dir, filename)
|
|
|
|
@staticmethod
|
|
def get_folder_size(folder_path: str) -> int:
|
|
total_size = 0
|
|
for path in Path(folder_path).rglob('*'):
|
|
if path.is_file():
|
|
total_size += path.stat().st_size
|
|
return total_size
|
|
|
|
@staticmethod
|
|
def get_file_size(file_path: str) -> int:
|
|
return os.path.getsize(file_path)
|
|
|
|
@staticmethod
|
|
def get_files_size(files: List[str]) -> int:
|
|
total_size = 0
|
|
for file in files:
|
|
total_size += os.path.getsize(file)
|
|
return total_size
|