You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
from abc import ABC, abstractmethod
|
|
|
|
|
|
class IOReader(ABC):
|
|
@abstractmethod
|
|
def read(self, path: str) -> bytes:
|
|
"""Read the file.
|
|
|
|
Args:
|
|
path (str): file path to read
|
|
|
|
Returns:
|
|
bytes: the content of the file
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def read_at(self, path: str, offset: int = 0, limit: int = -1) -> bytes:
|
|
"""Read at offset and limit.
|
|
|
|
Args:
|
|
path (str): the path of file, if the path is relative path, it will be joined with parent_dir.
|
|
offset (int, optional): the number of bytes skipped. Defaults to 0.
|
|
limit (int, optional): the length of bytes want to read. Defaults to -1.
|
|
|
|
Returns:
|
|
bytes: the content of file
|
|
"""
|
|
pass
|
|
|
|
|
|
class IOWriter(ABC):
|
|
|
|
@abstractmethod
|
|
def write(self, path: str, data: bytes) -> None:
|
|
"""Write file with data.
|
|
|
|
Args:
|
|
path (str): the path of file, if the path is relative path, it will be joined with parent_dir.
|
|
data (bytes): the data want to write
|
|
"""
|
|
pass
|