Das soll jetzt wirklich nicht falsch rüber kommen, aber anscheinend habe ich hier die absoluten Python-Götter vor mir.
Irgendwie ist alles, aber wirklich alles was ich woanders im Netz finde eurer Meinung nach Quatsch und falsch.
Ich finde das sehr schade, so vertreibt man Anfänger.
Entweder reden wir komplett aneinander vorbei oder du hast den Code nicht gelesen?Oder wo greifst Du auf `cls_Raspi_Temp.temp_cpu` zu?
Hier greife ich darauf zu:
Code: Alles auswählen
if line == 'get cpu':
ausgabe=(str(Raspi_temperatures.temp_cpu)+" °C\n")
self.send(ausgabe)
Sicher nicht, mitDie sind ja auch immer 0
Code: Alles auswählen
with open('/sys/class/thermal/thermal_zone0/temp', 'r') as tmpFile:
self.temperature_cpu = float(tmpFile.read())/1000
tmpFile.closed
self.temperature_gpu = float(subprocess.check_output(["/opt/vc/bin/vcgencmd", "measure_temp"]).replace( 'temp=', '' ).replace( '\'C', '' ).rstrip())
Was dann jetzt? In meinem ersten Code-Beispiel, ganz oben (an den Anfang scrollen) hatte ich noch "elif" genutzt und dort wurde dann auch gemeckert ... wie ich es mache, es ist falsch.Die ``if``\s werden trotzdem ausgeführt, also die Bedingungen werden überprüft, auch wenn dem Programmierer/Leser eigentlich klar ist, dass wenn eine Bedingung zutrifft die anderen nicht zutreffen können und man sie deswegen nicht testen braucht → ``elif``.
Das ich dann jedes mal einen Diskzugriff hätte, der sicher länger dauert als nur schnell die Variabel auszulesen.Was ist daran jetzt besser oder übersichtlicher als eine Funktion aufzurufen, die diese beiden Werte als Rückgabewert hat?
Und auf einem Raspberry Pi versuche ich Zeit zu sparen wo es geht.
Danke, das hilft mir wirklich weiter.Allerhöchstens irgendwo ganz oben in der Aufrufhierarchie wenn man man das Programm zum Beispiel in einer Hauptschleife unbedingt davon abhalten möchte abzubrechen. Dann sollte man aber den Fehler irgendwie protokollieren, damit die nicht einfach so verschluckt werden und man sie auch finden kann. `logging` kennt dafür die `exception()`-Funktion/-Methode, die auch gleich den gesamten Traceback protokolliert. Denn von einer Warnung die einfach nur 'Unerwarteter Fehler' hat man nicht wirklich etwas wenn man den Fehler suchen und beseitigen möchte.
Damit werde ich mich gleich befassen
Wo gebe ich den Strings noch mit "+str()" aus?Stringformatierung benutzt immer noch nicht
Was ist den an dieser Lösung falsch, bzw. nicht formatiert?
Code: Alles auswählen
logger.info('Raspberry Pi - GPU Temperatur %s °C', self.temperature_gpu)
Hier könnte ich wieder heulen. Erst wird gemeckert das ich mit "open as" arbeiten soll.warum benutzt du with und closed, was soll das überhaupt sein?
Dann suche ich im Internet nach einem entsprechend Tutorial und baue es ein - wieder falsch.Vermutlich der gleiche Grund warum man kein with open as verwendet
Sry Leute, da steige ich nicht mehr durch, mal so, mal so, rüder Ton (m.M.) und nur wenig wirkliche Hilfe.
Schade, echt schade, den ich hatte wirklich gehofft hier geholfen zu bekommen.
Und nein, ich wollte kein fertiges Skript geliefert bekommen sondern nur 2-3 Zeilen Code als Hinweis wie es besser/richtig ist.