QR Code Reader

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Hubert784
User
Beiträge: 4
Registriert: Freitag 12. Februar 2021, 14:52

Hallo zusammen,

ich bin neu hier und freue mich auf viele interessante Themen.
Programmiere seit 3 Jahren Hobby mässig Python, bin aber noch weit davon entfernt ein Profi zu sein 8)


Aktuell möchte ich einen QR Scanner mit Python nutzen, bei Amazon gibt es aber unzählige QR Scanner.
Hat jemand damit eventuell Erfahrung und kann mir einen Empfehlen?

Zu meinem Vorhaben (Da frage ich eventuell später mal nach falls ich nicht weiter weiß):

Ich habe einen Ordner in dem sind .jpg Dateien enthalten. (z.B. 5566.jpg, 5577.jpg, ... usw)
Mit dem QR Scanner möchte ich dann einen QR Code scannen und setze hinten noch die endung .jpg dran.
Ist der gescannte Code jetzt 5566 kommt noch die endung .jpg dran und anschließend wird im Ordner kontrolliert ob die 5566.jpg vorhanden ist.
Falls ja wird diese gelöscht, falls nicht kommt eine Errormeldung.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wieso willlst du denn eine QR-Scanner kaufen? Du kannst doch Bilder auf dem Computer einfach mit einer QR-scanner-Bibliothek (da gibt es garantiert was fuer Python) durcharbeiten.
Hubert784
User
Beiträge: 4
Registriert: Freitag 12. Februar 2021, 14:52

Über die Kamera meines Notebooks hab ich das schon zusammengebracht, aber es wird für das Projekt ein seperater QR-Scanner benötigt.
Benutzeravatar
__blackjack__
User
Beiträge: 14054
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Hubert784: Habe keine Erfahrung mit dedizierten Geräten, kann also keinen Empfehlen. Ich würde einen nehmen der als serielles Gerät angesprochen werden kann oder der sich als USB-Keyboard verhält. Wobei ersteres eventuell den Vorteil hat, dass man nicht darauf achten muss es von tatsächlichen Keyboardeingaben unterscheiden zu müssen und man braucht auch keine Eingabe die den Fokus hat um Daten zu empfangen/verarbeiten.

Auf Sicherheit solltest Du bei Deinem Programm ein bisschen achten. Nicht das Dir jemand QR-Codes unterjubeln kann, die irgendwo anders als dort wo Du das willst Dateien löschen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Hubert784
User
Beiträge: 4
Registriert: Freitag 12. Februar 2021, 14:52

@__blackjack__
Danke für deine Antwort, konnte mich erst wieder heute damit beschäftigen.

Habe mir nun diesen QR Scanner gekauft: https://www.amazon.de/dp/B07JLDM2MN/ref=emc_b_5_t
Dieser verhält sich als USB-Keyboard, einen der über seriell angesprochen wird hab ich nicht gefunden. Denke dass es der USB Scanner auch tut.

Wenn ich nun einen Editor aufmache und einen QR Code scanne, schreibt er mir den Code in den Editor.

Nur was ist, wenn ich keinen Editor oder ähnliches habe, sondern den Inhalt per Ctrl+V irgendwo eintragen möchte, gibt es soetwas in Python?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Darum war der Hinweis “Kauf dir einen der serielle Kommunikation unterstützt”. Denn jetzt ballert der seinen R-Code-Inhalt in das UI-Element, das Focus hat. Wenn so eines existiert.

Man kann das mit pyinput zwar auch programmatisch abgreifen. Aber was man NICHT kann, ist das Verhalten des OS so zu ändern, dass es eben nicht probiert wird, irgendwo einzugeben.

Wenn es also keinen Weg gibt, den scanner anders einzustellen, solltest du ihn zurückgeben. Und eine kaufen, der das kann.
Hubert784
User
Beiträge: 4
Registriert: Freitag 12. Februar 2021, 14:52

Den Hinweis habe ich auch Verstanden.
Ich möchte es einfach mal mit dem Scanner versuchen den ich jetzt habe, zurückschicken kann ich immer noch.

Am Desktop befindet sich ein Ordner "QR_Test" in dem 3 Files liegen "Test1.txt, Test2.txt und Test3.txt"
Den Pfad und Ordner finde ich, ebenso auch die Files.
Auch ein Abgleich vom QR Code und den Files ist möglich, also ob sich das was gescannt worden ist, auch im Ordner befindet.

Falls es ein Match gibt, soll das eine File gelöscht werden.
Doch leider bekomme ich eine Fehlermeldung: [WinError 2] Das System kann die angegebene Datei nicht finden: 'Test1.txt'
Jetzt komme ich derzeit nicht weiter, hat jemand Rat?

So sieht der Code erstmal aus:

Code: Alles auswählen

#!/usr/bin/python3

import os
import sys

PATH_TO_FILES = "C:/Users/Hubi/Desktop/QR_Test"
files = os.listdir(PATH_TO_FILES)
print(files)

while True:
    QR_input = input("Barcode: ")

    if QR_input not in files:
        print("Scan nicht gefunden")
    if QR_input in files:
        print("Scan gefunden")
        try:
            os.remove(QR_input)
            print("Datei gelöscht")
        except OSError as e:
            print(e)
    else:
        pass
Zuletzt geändert von Hubert784 am Mittwoch 3. März 2021, 15:01, insgesamt 1-mal geändert.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der Input ist nur zusammen mit dem Verteichnis ein gültiger Pfad. Das musst du also noch davor packen. Am besten benutzt du gleich die pathlib für den ganzen Dateisystem Kram.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Du mußt schon den vollständigen Pfad angeben. Wenn man eine if-Bedingung hat, die das exakte Gegenteil der Bedingung des davorstehenden Blocks hat, dann benutzt man else. Das else-pass ist unnötig.
Am besten pathlib.Path benutzen:

Code: Alles auswählen

from pathlib import Path

PATH_TO_FILES = Path.home() / "Desktop" / "QR_Test"

def main():
    while True:
        qr_input = input("Barcode: ")
        filename = PATH_TO_FILES / qr_input
        if not filename.exists():
            print("Scan nicht gefunden")
        else:
            print("Scan gefunden")
            try:
                filename.unlink()
                print("Datei gelöscht")
            except OSError as e:
                print(e)


if __name__ == "__main__":
    main()
Benutzeravatar
__blackjack__
User
Beiträge: 14054
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wobei ich an der Stelle noch mal ausdrücklich davor warnen möchte Benutzereingaben einfach so ohne ”Sicherungsnetz” als Dateinamen für das löschen zu verwenden! Sonst druckt Dir irgendwann einer einen QR-Code mit "../../../dateiname_im_heimatverzeichnis" aus. Und man sieht QR-Codes so etwas ja auch gar nicht an.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten