darabonba/file.py (37 lines of code) (raw):

import os from datetime import datetime from darabonba.date import Date class File: def __init__(self, path: str): self._path = path self._file = None @staticmethod def exists(path: str) -> bool: return os.path.exists(path) def path(self) -> str: return self._path def length(self) -> int: return os.path.getsize(self._path) def create_time(self) -> Date: ctime = os.path.getctime(self._path) return Date(datetime.fromtimestamp(ctime).isoformat()) def modify_time(self) -> Date: mtime = os.path.getmtime(self._path) return Date(datetime.fromtimestamp(mtime).isoformat()) def read(self, size: int) -> bytes: if self._file is None: self._file = open(self._path, 'rb') data = self._file.read(size) if not data: self._file.close() self._file = None return data def write(self, data: bytes) -> None: with open(self._path, 'ab') as f: f.write(data) @staticmethod def create_read_stream(path: str): return open(path, 'rb') @staticmethod def create_write_stream(path: str): return open(path, 'ab')