LifeAdmin-AI / utils /file_utils.py
Maheen001's picture
Update utils/file_utils.py
6ace6f3 verified
raw
history blame
1.61 kB
import shutil
from pathlib import Path
from typing import List, Tuple, Dict
import mimetypes
def get_file_info(file_path: str) -> Dict:
"""Get file information"""
path = Path(file_path)
if not path.exists():
return {'error': 'File not found'}
stat = path.stat()
mime_type, _ = mimetypes.guess_type(str(path))
return {
'name': path.name,
'size': stat.st_size,
'size_mb': round(stat.st_size / (1024 * 1024), 2),
'extension': path.suffix,
'mime_type': mime_type,
'created': stat.st_ctime,
'modified': stat.st_mtime
}
def ensure_directory(directory: str):
"""Ensure directory exists"""
Path(directory).mkdir(parents=True, exist_ok=True)
def copy_file(src: str, dst: str) -> bool:
"""Copy file safely"""
try:
ensure_directory(str(Path(dst).parent))
shutil.copy2(src, dst)
return True
except Exception as e:
print(f"Copy error: {e}")
return False
def move_file(src: str, dst: str) -> bool:
"""Move file safely"""
try:
ensure_directory(str(Path(dst).parent))
shutil.move(src, dst)
return True
except Exception as e:
print(f"Move error: {e}")
return False
def list_files(directory: str, extension: str = None) -> List[str]:
"""List files in directory"""
path = Path(directory)
if not path.exists():
return []
if extension:
return [str(f) for f in path.glob(f"*{extension}")]
else:
return [str(f) for f in path.glob("*") if f.is_file()]