badfsaadkl
Goto Top

Python - NoneType beim Dateiauslesen

Hallo zusammen,

ich habe mir ein kleine Python Skript erstellt, welches aus mehreren Files einen Wert auslesen soll und diesen aktuell auf der Konsole ausgibt.
Das ganze funktioniert soweit eigentlich auch so wie gewünscht.
Wenn ich das ganze mir Zeilenweise ausgebe werden die Werte korrekt angezeigt.

Wenn ich mir die Ausgabe jedoch aber in einer Zeile ausgeben möchte, um es später z.B. in eine Ausgabedatei strukturiert ausgeben möchte erhalte ich einen Fehler:


Anbei erst mal die Filestruktur:


Die Werte nach welchem ich suche können leider in in den YAML Files in mehreren Arten in den Files auftauchen.
Anbei mal die Möglichkeiten am Beispiel des Wertes CPU aus der resources.yaml:
(Aufgrund der Yaml Struktur sind noch entsprechende Leerzeichen vor dem Wert)

cpu: "1"
cpu: 1000m
cpu: 1

Sprich der Wert kann als normale Zahl enthalten sein, mit Anführungszeichen sowie als Zahl mit Einheit am Ende.

Anbei mal mein Skript wie die Ausgabe funktioniert:


Als Ausgabe erhalte ich die ausgelesenen Werte:


Sobald ich jetzt das ganze aber in einer Zeile haben möchte (siehe aktuell auskomnentiert in Zeile 27) bekomme ich folgenden Fehler:


Könnt Ihr mir bitte helfen wie ich diesen Fehler weg bekomme und die Werte in eine Zeile bekomme ?

Vielen Dank

Gruß
BadFsaadKl

Content-Key: 584011

Url: https://administrator.de/contentid/584011

Ausgedruckt am: 06.10.2022 um 19:10 Uhr

Mitglied: 144705
Lösung 144705 02.07.2020 aktualisiert um 18:05:30 Uhr
Goto Top
Könnt Ihr mir bitte helfen wie ich diesen Fehler weg bekomme und die Werte in eine Zeile bekomme ?
Erstens gibst du aus deiner Funktion search_in_file überhaupt keine Werte mit return zurück sondern gibst diese nur auf der Konsole (print) aus, deswegen auch die einzig logische Fehlermeldung mit "NoneType" und das das nicht mit den Semikolons zusammengefügt werden kann, weil du eben nichts aus der Funktion zurück gibst.

Gib also aus deiner Funktion den String zurück
return newx2

Aber nicht vergessen auch einen leeren String in deiner Funktion zurückzugeben wenn es keine Fundstellen gibt, ansonsten musst du alle Fuktionsaufrufe mit str(AUFRUF) kapseln. By the way gibtet in Python eine schöne Funktion namens string.join(), dann braucht man nicht so lange Semikolon + Orgien veranstalten face-wink
https://www.w3schools.com/python/ref_string_join.asp
Mitglied: BadFsaadKl
BadFsaadKl 02.07.2020 um 18:20:33 Uhr
Goto Top
Hi latavia,

danke für die schnelle Antwort.

Mit
hatte ich auch schon rumprobiert statt dem print.
Hier bekomme ich aber den gleichen Fehler face-sad

Leere Werte können zum gluck nicht vorkommen da die gesuchten Werte definitiv in den Files vorhanden sind face-wink.

Wie rufe ich die Werte dann ab wenn ich mittels return newx2 diese aus der Funktion ausgebe ?

Habe leider bisher noch nicht viel mit Funktionen gemacht.
Ist quasi mein erstes Skript wo ich mal eine Funktion versuche face-wink

wenn ich jetzt das Print gegen return austausche, werden mir die ausgelesenen Wert gar nicht mehr angezeigt face-sad


Mitglied: BadFsaadKl
BadFsaadKl 03.07.2020 um 07:25:31 Uhr
Goto Top
Der Aufruf klappt nun.
Ich musste im unteren Bereich einfach noch mal den Funktionsaufruf für die Rückgabe als Variable definieren.
Dann klappt es auch mit dem Return in der Funktion face-wink

Mitglied: 144705
Lösung 144705 03.07.2020 aktualisiert um 08:33:42 Uhr
Goto Top
Ich musste im unteren Bereich einfach noch mal den Funktionsaufruf für die Rückgabe als Variable definieren.
Nein ist nicht nötig, guckst du, du musst nur immer einen String zurückgeben(auch wenn er leer wäre), auch wenn die Bedingung in der Function nicht zutrifft, und das tust du bei dir eben nicht.
https://tio.run/##VYwxDoMwDEX3nMLyFKsjG6h7lx4igiCQUgc5DoLTh6AywF/ff2/ZdY ...