The new `grep` function reads a specified file and returns lines containing a given pattern. It handles file not found errors and logs unexpected exceptions, improving resilience in file operations.
79 lines
2.5 KiB
Python
79 lines
2.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
# SPDX-FileCopyrightText: 2025 KUNBUS GmbH
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
"""Helper for dbus."""
|
|
|
|
from logging import getLogger
|
|
|
|
log = getLogger(__name__)
|
|
|
|
REVPI_DBUS_NAME = "com.revolutionpi.middleware1"
|
|
REVPI_DBUS_BASE_PATH = "/com/revolutionpi/middleware1"
|
|
|
|
|
|
class DbusInterface:
|
|
|
|
def cleanup(self):
|
|
"""
|
|
Represents a method responsible for performing cleanup operations. This method is executed to properly
|
|
release resources, close connections, or perform other necessary finalization tasks.
|
|
|
|
This method does not take any arguments or return a value.
|
|
"""
|
|
pass
|
|
|
|
|
|
def extend_interface(*args) -> str:
|
|
"""
|
|
Extends an interface name by appending additional segments to a pre-defined base name.
|
|
|
|
This function takes multiple arguments, concatenates them with a predefined base
|
|
interface name, and returns the resulting string, effectively constructing an
|
|
extended interface name.
|
|
|
|
Args:
|
|
*args: str
|
|
Components to be appended to the base interface name.
|
|
|
|
Returns:
|
|
str
|
|
Fully constructed interface name by joining the base interface name with
|
|
the provided segments.
|
|
"""
|
|
return ".".join([REVPI_DBUS_NAME, *args])
|
|
|
|
|
|
def grep(pattern, filename):
|
|
"""
|
|
Searches for lines in a file that contain a given pattern and returns them as a list.
|
|
|
|
The function reads lines from the specified file and checks whether each line
|
|
contains the provided pattern. It returns a list of lines that match the
|
|
pattern. If the file is not found, an empty list is returned. Any other
|
|
exceptions during the file reading process are caught and logged.
|
|
|
|
Args:
|
|
pattern (str): The substring to search for within the file's lines.
|
|
filename (str): The path to the file that will be searched.
|
|
|
|
Returns:
|
|
list[str]: A list containing lines that include the provided pattern, with
|
|
leading and trailing spaces removed.
|
|
|
|
Raises:
|
|
FileNotFoundError: This error is caught if the file specified is not
|
|
found.
|
|
Exception: Any unforeseen exception during file operations is caught and
|
|
logged.
|
|
"""
|
|
try:
|
|
with open(filename, "r") as file:
|
|
# Gibt alle Zeilen zurück, die das Muster enthalten
|
|
matching_lines = [line.strip() for line in file if pattern in line]
|
|
return matching_lines
|
|
except FileNotFoundError:
|
|
return []
|
|
except Exception as e:
|
|
log.error(f"Error reading file: {e}")
|
|
return []
|