richard-su's picture
Upload folder using huggingface_hub
b5df735 verified
raw
history blame
1.53 kB
"""
File service for handling file operations
"""
import aiofiles
from pathlib import Path
from typing import Optional
class FileService:
"""Service for file operations"""
async def write_text_file(self, file_path: str, content: str, encoding: str = "utf-8"):
"""Write text content to file asynchronously"""
async with aiofiles.open(file_path, 'w', encoding=encoding) as f:
await f.write(content)
async def read_text_file(self, file_path: str, encoding: str = "utf-8") -> str:
"""Read text content from file asynchronously"""
async with aiofiles.open(file_path, 'r', encoding=encoding) as f:
return await f.read()
def ensure_directory(self, directory_path: str):
"""Ensure directory exists"""
Path(directory_path).mkdir(parents=True, exist_ok=True)
def file_exists(self, file_path: str) -> bool:
"""Check if file exists"""
return Path(file_path).exists()
def get_file_size(self, file_path: str) -> int:
"""Get file size in bytes"""
return Path(file_path).stat().st_size
def get_file_extension(self, file_path: str) -> str:
"""Get file extension"""
return Path(file_path).suffix.lower()
def is_audio_file(self, file_path: str) -> bool:
"""Check if file is an audio file"""
audio_extensions = {'.mp3', '.wav', '.m4a', '.flac', '.aac', '.ogg', '.wma'}
return self.get_file_extension(file_path) in audio_extensions