Files
photohub/src/path.py
2025-05-22 17:53:05 +02:00

74 lines
2.2 KiB
Python

from __future__ import annotations
import os
import sys
import shutil
class Path():
def __init__(self, *paths: str | Path):
self._absolute_path: str = ""
for path in paths:
self._absolute_path = os.path.join(self._absolute_path, path._absolute_path if isinstance(path, Path) else path)
self._absolute_path = os.path.abspath(self._absolute_path)
self._name: str = os.path.basename(self._absolute_path)
self._dirpath: str = os.path.dirname(self._absolute_path)
def __str__(self) -> str:
return self._name
def get_dirpath(self):
return self._dirpath
def get_url(self):
site_path: Path = Path(sys.argv[1])
return self._absolute_path[len(site_path._absolute_path):]
def get_absolute_path(self):
return self._absolute_path
def get_name(self):
if not self.exist():
return None
return self._name
def touch(self) -> None:
if (self.exist()):
return None
open(self.get_absolute_path(), "w+").close()
def create(self) -> None:
os.makedirs(self.get_absolute_path())
def exist(self) -> bool:
return os.path.exists(self.get_absolute_path())
def get_dirs(self) -> list[Path]:
dirs: list[Path] = []
elements = os.listdir(self.get_absolute_path())
elements.sort()
elements.reverse()
for element in elements:
path: Path = Path(self._absolute_path, element)
if (os.path.isdir(path.get_absolute_path())):
dirs.append(path)
return dirs
def get_files(self) -> list[Path]:
files: list[Path] = []
elements = os.listdir(self.get_absolute_path())
elements.sort()
elements.reverse()
for element in elements:
path: Path = Path(self._absolute_path, element)
if (os.path.isfile(path.get_absolute_path())):
files.append(path)
return files
def copy_to(self, destination: Path) -> None:
shutil.copy2(self.get_absolute_path(), destination.get_absolute_path())
def __str__(self):
return self._absolute_path
def __repr__(self):
return f"Path({self._absolute_path})"