Simpler String Vergleich

Moin,

ich versuche gerade für PlatformIO ein Monitor-Filter umzuschreiben, damit von AUnit die Ausgabe direkt in ein File geleitet wird. Nur bin ich irgendwie zu doof dazu:

import io
import os.path
from datetime import datetime

from platformio.device.monitor.filters.base import DeviceMonitorFilterBase

class LogToFile(DeviceMonitorFilterBase):
   NAME = "aunit"

   def __init__(self, *args, **kwargs):
       super().__init__(*args, **kwargs)
       self._log_fp = None

   def __call__(self):
       log_file_name = "platformio-aunit-filter.log"
       print("--- Logging an output to %s" % os.path.abspath(log_file_name))
       # pylint: disable=consider-using-with
       self._log_fp = io.open(log_file_name, "w", encoding="utf-8")
       return self

   def __del__(self):
       if self._log_fp:
           self._log_fp.close()

   def rx(self, text):
       if text.startswith('Test') == True:
           self._log_fp.write(text)
           self._log_fp.flush()
       return text

die Änderung von meiner Seite betrift nur die Funktion rx(). Wenn der Text/Zeile mit „Test“ beginnt, dann soll die gesamte Text/Zeile in das entsprechende Logfile geschrieben werden. Aber er schreibt nichts ins Logfile.

Wäre schön wenn mir jemand verraten könnte wo mein Fehler liegt.

danke, mogel

Moin, ganz blöde Frage, sicher dass vor Test keine anderen Zeichen sind?
Im Zweifel lass es dir mal mit nem Zeichen davor ausgeben.
Und nach meinem Wissen musste auch kein == True machen sollte eigentlich wie in anderen Sprachen auch gehen

da mir die Phytonfähigkeiten komplett fehlen, habe ich jetzt das startswith() durch ein find() ersetzt. Und es kommt nur kompletter Blödsinn raus, liefert mir nämlich auch Zeilen ohne „Test“. Dann habe ich das alles in die Datei ausgeben lassen, also f.write(text + "\n"). Das Resultat: die Funktion wird nicht bei vollständigen Zeilen aufgerufen, sondern immer wenn was da ist.

das es beim Time-Plugin (platformio-core/time.py at develop · platformio/platformio-core · GitHub) funktioniert, habe ich mir mal das angeschaut. Ich schau mal was ich für meine Zwecke übernehmen kann/muss.

der gute alte Strohhalm in der Verzweiflung :sweat_smile:

danke, mogel

nerv

watch -n5 'cat runtime.log | grep -i test'

das macht auch was es soll

:smiley:
ach wenn es nur darum geht

tail -f runtime.log | grep -i test