exposing some file utilities

This commit is contained in:
hardikdava 2024-06-17 20:44:48 +02:00
parent 32b70c5d37
commit 8c0e2fb362
2 changed files with 21 additions and 13 deletions

View File

@ -90,7 +90,15 @@ from supervision.keypoint.core import KeyPoints
from supervision.metrics.detection import ConfusionMatrix, MeanAveragePrecision
from supervision.tracker.byte_tracker.core import ByteTrack
from supervision.utils.conversion import cv2_to_pillow, pillow_to_cv2
from supervision.utils.file import list_files_with_extensions
from supervision.utils.file import (
list_files_with_extensions,
read_json_file,
read_txt_file,
read_yaml_file,
save_json_file,
save_text_file,
save_yaml_file,
)
from supervision.utils.image import (
ImageSink,
create_tiles,

View File

@ -57,7 +57,7 @@ def list_files_with_extensions(
return files_with_extensions
def read_txt_file(file_path: str, skip_empty: bool = False) -> List[str]:
def read_txt_file(file_path: Union[str, Path], skip_empty: bool = False) -> List[str]:
"""
Read a text file and return a list of strings without newline characters.
Optionally skip empty lines.
@ -70,7 +70,7 @@ def read_txt_file(file_path: str, skip_empty: bool = False) -> List[str]:
Returns:
List[str]: A list of strings representing the lines in the text file.
"""
with open(file_path, "r") as file:
with open(file_path.as_posix(), "r") as file:
if skip_empty:
lines = [line.rstrip("\n") for line in file if line.strip()]
else:
@ -79,7 +79,7 @@ def read_txt_file(file_path: str, skip_empty: bool = False) -> List[str]:
return lines
def save_text_file(lines: List[str], file_path: str):
def save_text_file(lines: List[str], file_path: Union[str, Path]):
"""
Write a list of strings to a text file, each string on a new line.
@ -87,12 +87,12 @@ def save_text_file(lines: List[str], file_path: str):
lines (List[str]): The list of strings to be written to the file.
file_path (str): The path to the text file.
"""
with open(file_path, "w") as file:
with open(file_path.as_posix(), "w") as file:
for line in lines:
file.write(line + "\n")
def read_json_file(file_path: str) -> dict:
def read_json_file(file_path: Union[str, Path]) -> dict:
"""
Read a json file and return a dict.
@ -102,12 +102,12 @@ def read_json_file(file_path: str) -> dict:
Returns:
dict: A dict of annotations information
"""
with open(file_path, "r") as file:
with open(file_path.as_posix(), "r") as file:
data = json.load(file)
return data
def save_json_file(data: dict, file_path: str, indent: int = 3) -> None:
def save_json_file(data: dict, file_path: Union[str, Path], indent: int = 3) -> None:
"""
Write a dict to a json file.
@ -116,11 +116,11 @@ def save_json_file(data: dict, file_path: str, indent: int = 3) -> None:
data (dict): dict with unique keys and value as pair.
file_path (str): The path to the json file.
"""
with open(file_path, "w") as fp:
with open(file_path.as_posix(), "w") as fp:
json.dump(data, fp, cls=NumpyJsonEncoder, indent=indent)
def read_yaml_file(file_path: str) -> dict:
def read_yaml_file(file_path: Union[str, Path]) -> dict:
"""
Read a yaml file and return a dict.
@ -130,12 +130,12 @@ def read_yaml_file(file_path: str) -> dict:
Returns:
dict: A dict of content information
"""
with open(file_path, "r") as file:
with open(file_path.as_posix(), "r") as file:
data = yaml.safe_load(file)
return data
def save_yaml_file(data: dict, file_path: str) -> None:
def save_yaml_file(data: dict, file_path: Union[str, Path]) -> None:
"""
Save a dict to a json file.
@ -145,5 +145,5 @@ def save_yaml_file(data: dict, file_path: str) -> None:
file_path (str): The path to the json file.
"""
with open(file_path, "w") as outfile:
with open(file_path.as_posix(), "w") as outfile:
yaml.dump(data, outfile, sort_keys=False, default_flow_style=None)