[Gelöst] Python3 with open invalid syntax

  • Moin, ich hänge schon wieder an einer einfachen Sache.

    Wenn ein GPIO Low oder High ist, will ich das in einer Datei haben, aber dann bekomme ich eine Fehlermeldung für die nächste Zeile:

    Code
        elif gpio.input(24) == gpio.LOW:
           ^
    SyntaxError: invalid syntax

    Der Code:

    Klammere ich das with open aus, läuft der Code durch. :conf:

    Resultat:

    Code
      gpio.setup(24, gpio.OUT)
    GPIO 24 an

    :helpnew:

  • fred0815

    Changed the title of the thread from “Python3 with open invalid syntax” to “[Gelöst] Python3 with open invalid syntax”.
  • Ok, so besser ?

  • Hallo,


    Ok, so besser ?

    In Zeile 8 und 11 ist 'str()' nicht notwendig. Die "1" ist durch die Anführungszeichen schon ein String, siehe:

    Code
    print(type("1"))
    print(type(str("1")))

    Ansonsten würde ich nur sagen, dass man Funktionen nutzen kann, sprechende Namen, den Pfad könnte man als Konstante mit 'Pathlib' definieren und wie Hofei schon schrieb, 'gpiozero'.

    PyCharm läuft halt auf dem Pi nicht so charmant

    Ich schreibe den Code eig. immer auf dem Laptop, meist auch mit PyCharm und kopiere ihn dann auf den Pi. 'gpiozero' bietet dazu auch eine Möglichkeit Pins zu simulieren:

    23. API - Pins — GPIO Zero 1.6.2 Documentation


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Ich bin mir nicht ganz sicher, aber 'Thonny' zeigt glaub fehlende Klammern auch an. Aber nicht definierte Namen oder so nicht. Also falls du mit der Desktop-Version arbeitest.

    Ansonsten viel Glück beim Klammern zählen. 8o


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Gut dass das nicht nur mir so geht ^^


    Jetzt hör ich aber auf, dein Thema hier in die Länge zu ziehen.


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Post by SteepBrook64153 ().

    The post was deleted, no further information is available.
  • Es sind zu viele Zweige. Das letzte ``else`` kann nie erreicht werden und das ``elif`` testet genau das Gegenteil vom ``if``, wäre also eigentlich ein ``else``.

    Who is General Failure and why is he reading my hard disk?

    • Official Post

    Ich hätte auch eine Frage.


    Was geben denn gpio.HIGH (und gpio.LOW) aus? Bei HIGHT (z.B.) gibt es ja IMHO nur drei Möglichkeiten: 1 oder True oder HIGHT. Wenn es nur darum geht den Wert in eine Datei zu schreiben, dann brauchts evtl. keine Abfrage, sondern könnte direkt geschrieben werden.


    Was genau hast Du eigentlich damit vor?


    Btw. das bereits angesprochene gpiozero kennt value, das 0 oder 1 (oder bei Bedarf PWM auch in Schritten) ausgeben würde.

  • Hallo,


    dann wäre für den Fall, dass mit dem "GPIO auslesen" etwas nicht funktioniert ein try/except - Block an der Stelle von dem 'else' sinnvoller?



    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Nicht wirklich. Es gibt den Fall nicht wirklich und die Ausnahmehandlung so wie sie da jetzt steht macht ja nicht wirklich etwas sinnvolles. Nur den Traceback unterdrücken, man sieht also im Ausnahmefall nicht wo die Ausnahme genau ausgelöst wird.

    Who is General Failure and why is he reading my hard disk?

  • Hi __blackjack__ wenn man davon ausgeht, der Fall würde aus irgendeinem Grund vorkommen, wie würde dann eine sinnvolle Ausnahmebehandlung aussehen?


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Post by SteepBrook64153 ().

    The post was deleted, no further information is available.
  • Dennis89 Die Frage ist was denn da sinnvoll gemacht werden soll? Gibt es dann irgendwas was man machen könnte damit das Programm weiterlaufen kann? Falls nicht bricht das ja sowieso ab und dann kann man das auch einfach mit der vollen Information von Ausnahme + Traceback abbrechen lassen.

    Who is General Failure and why is he reading my hard disk?

  • __blackjack__ Danke für die Antwort. Jetzt kann ich nachvollziehen was du gemeint hast. :thumbup:



    an die Programmierprofis Dennis89 und __blackjack__ :

    Nur um keinen falschen Eindruck hier zu hinterlassen. Ich bin *kein* Programmierprofi, sondern lerne gerade in der Freizeit Python und zähle mich ganz klar zu den Anfängern. Bei __blackjack__ trifft die Aussage zu.


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?