[Gelöst] Python3 with open invalid syntax

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • 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:

  • 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

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • 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

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Beitrag von SteepBrook64153 (30. Juni 2021 um 19:29)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
    • Offizieller Beitrag

    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

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • 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.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • Beitrag von SteepBrook64153 (30. Juni 2021 um 21:10)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • 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.

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

  • __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

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!