Fryboyter

Python-Kurs ab dem 27.06.18 im Arch Classroom

Morgen findet im Arch Classroom um 7 UTC (in Deutschland dürfte das 9 Uhr sein) ein Python-Kurs für Anfänger statt. Unter https://github.com/archclassroom/python-beginners findet man die nötigen Unterlagen, sowie weitere Informationen und Links. “Dozent” ist Pulecz (Tomáš Mikulec). Der erste Teil dürfte ca. 2 Stunden dauern.

OSBN | Allgemein

Humble Software Bundle: Python Dev Kit

Humble Bundle bietet man aktuell einige Sachen zum Thema Python an. Da Python unter Linux ja dann doch ab und zu zum Einsatz kommt, habe ich gedacht ich weise einfach mal kurz darauf hin. Interessant ist hier für den einen oder anderen vielleicht auch der Gutschein über 50 US-Dollar bei DigitalOcean oder die Jahreslizenz von Gitkraken Pro.

Das ganze läuft noch 13 Tage und ein paar Stunden und ist unter https://www.humblebundle.com/software/python-dev-kit-bundle zu finden.

OSBN | Allgemein

E-Mail-Adressen mit Python aus Datenbanksicherung auslesen

Ab und zu werde ich bei schwierigen Fällen um Hilfe gebeten. Wie zum Beispiel vor ein paar Tagen. Aufgabenstellung war, die E-Mail-Adressen in einer MySQL-Datenbank zu finden und die Treffer in eine Textdatei zu schreiben. Das Problem ist aber, dass die Datenbank nur als Datensicherung in Form einer SQL-Datei vorliegt und diese nicht eingespielt werden soll oder kann. Wäre auch zu einfach gewesen.

Da ich gerade als Fachliteratur das eBook von “Automate the Boring Stuff with Python” lese habe ich mich für Python als Lösung entschieden. Herausgekommen ist folgendes “Kunstwerk”.

#!/usr/bin/env python
""" Emails in einer Datei finden und Treffer in eine neue Datei schreiben """

import os
import re

QUELLDATEI = input("Quelldatei angeben: ")
ZIELDATEI = input("Zieldatei angeben: ")

if os.path.exists(QUELLDATEI):
    DATEN = open(QUELLDATEI, 'r')
    EMAILDATEI = DATEN.read()
else:
    print("Datei nicht gefunden")
    raise SystemExit


# Regex und Suche ohne doppelte Treffer
EMAILREGEX = re.compile(
    r'[a-z0-9!#$%&*+=?^_`{|}~-]+(?:\.[a-z0-9!#$%&*+=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?', re.IGNORECASE)
TREFFERDOPPELT = EMAILREGEX.findall(EMAILDATEI)
TREFFEREINFACH = set(TREFFERDOPPELT)

# Treffer ausgeben und in Datei schreiben
with open(ZIELDATEI, 'w') as f:
    for row in TREFFEREINFACH:
        print(row)
        f.write("%s\n" % str(row))

Habe ich schon erwähnt, dass ich so gut wie gar nicht programmieren kann? Nein? Gut ich kann es so gut wie nicht. Aber erstaunlicherweise funktioniert es. Auf eine Prüfung ob die jeweilige E-Mail-Adresse gültig ist, habe ich bewusst verzichtet. Das wird mit RegEx sonst ein Fass ohne Boden. Vor allem weil ich RegEx noch weniger beherrsche als z. B. Python. Von daher wie immer… Benutzung auf eigene Gefahr.

Nachtrag: Nach einem Testlauf ist mir aufgefallen, dass einige Adressen mehrfach vorhanden sind. Ich habe das Script daher noch einmal angepasst, so dass nun keine doppelten Adressen ausgegeben werden.

Nachtrag 2 Ich habe das Script noch einmal angepasst. Zum einen wird nun die Quelldatei sowie die Zieldatei abgefragt und ist nicht mehr fest hinterlegt und zum anderen habe ich mich an den PEP8-Richtlinien (außer der Zeilenlänge) orientert.

Linux | OSBN