@Peter18: Das ist offensichtlich nicht der tatsächliche Code, denn hier ist das Problem sehr offensichtlich ein Syntaxfehler.
Funktionsnamen werden klein_mit_unterstrichen geschrieben, und ein- oder zweibuchstabige Variablennamen sind schlecht.
Nach der öffnenden Klammer und vor der schliessenden Klammer bei den Argumenten gehört kein Leerzeichen.
Einen Wahrheitswert noch mal mit `bool()` in einen Wahrheitswert zu wandeln ist sinnfrei. `r` an sich ist sinnfrei weil man ja nicht nur ein ``return`` am Ende haben kann.
`split()` ist hier potentiell ”gefährlich”, denn das wird so nicht funktionieren wenn in der Zeile a) kein "=" enthalten ist, oder b) mehr als ein "=" enthalten ist. Für solche Fälle würde ich `partition()` verwenden.
Vermutlich wird Dein Problem sein, das in der Datei nicht "be_cool=True" steht, sondern so etwas wie "be_cool = True". Dann vergleichst Du " True" mit "True". Was unwahr ist. Oder bei den Zeilen hängt am Ende noch ein Zeilenendezeichen dran. Auch "True\n" und "True" sind nicht gleich.
Code: Alles auswählen
def get_boolean_value(line):
_, _, value = line.partition("=")
value = value.strip()
if value == "True":
return True
if value == "False":
return False
raise ValueError(f"not a boolean value: {value!r}")