Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+: www.dpunkt.plus |
Praktische Programmierlösungen für Einsteiger
2., aktualisierte und erweiterte Auflage
Al Sweigart
Lektorat: Dr. Michael Barabas
Lektoratsassitenz: Anja Weimer
Fachgutachter/in: Ari Lacenski und Philip James
Übersetzung & Satz: G&U Language & Publishing Services GmbH, www.gundu.com
Copy-Editing: Ursula Zimpfer, Herrenberg
Herstellung: Stefanie Weidner
Umschlaggestaltung: Helmut Kraus, www.exclam.de
nach der Originalvorlage von No Starch Press
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
ISBN:
Print 978-3-86490-753-1
PDF 978-3-96088-956-4
ePub 978-3-96088-957-1
mobi 978-3-96088-958-8
2., aktualisierte und erweiterte Auflage 2020
Copyright © 2020 dpunkt.verlag GmbH
Wieblinger Weg 17
69123 Heidelberg
Copyright © 2020 by Al Sweigart. Title of English-language original: Automate the Boring Stuff with Python, 2th Edition: Practical Programming for Total Beginners, ISBN 978-1-59327-992-9, published by No Starch Press. German-language edition copyright © 2020 by dpunkt.verlag. All rights reserved.
Hinweis:
Dieses Buch wurde auf PEFC-zertifiziertem Papier aus nachhaltiger Waldwirtschaft gedruckt. Der Umwelt zuliebe verzichten wir zusätzlich auf die Einschweißfolie.
Schreiben Sie uns:
Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: hallo@dpunkt.de.
Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.
Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.
Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag noch Übersetzer können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.
5 4 3 2 1 0
Der Autor
Der Fachgutachter
Danksagung
Einleitung
Für wen ist dieses Buch gedacht?
Programmierstil
Was ist Programmierung?
Was ist Python?
Programmierer müssen nicht viel Mathe können
Sie sind nie zu alt, um programmieren zu lernen
Programmierung ist kreativ
Der Aufbau dieses Buchs
Python herunterladen und installieren
Mu herunterladen und installieren
Mu starten
IDLE starten
Die interaktive Shell
Drittanbietermodule installieren
Hilfe finden
Sinnvolle Fragen stellen
Zusammenfassung
Teil 1Grundlagen der Python-Programmierung
1Grundlagen von Python
Ausdrücke in die interaktive Shell eingeben
Die Datentypen für ganze Zahlen, Fließkommazahlen und Strings
Stringverkettung und -wiederholung
Werte in Variablen speichern
Zuweisungsanweisungen
Variablennamen
Ihr erstes Programm
Analyse des Programms
Kommentare
Die Funktion print()
Die Funktion input()
Den Benutzernamen ausgeben
Die Funktion len()
Die Funktionen str(), int() und float()
Zusammenfassung
Wiederholungsfragen
2Flusssteuerung
Boolesche Werte
Vergleichsoperatoren
Boolesche Operatoren
Binäre boolesche Operatoren
Der Operator not
Kombinierte Verwendung von booleschen und Vergleichsoperatoren
Elemente zur Flusssteuerung
Bedingungen
Codeblöcke
Programmausführung
Flusssteuerungsanweisungen
If-Anweisungen
Else-Anweisungen
Elif-Anweisungen
While-Schleifen
Break-Anweisungen
Continue-Anweisungen
For-Schleifen und die Funktion range()
Module importieren
From-import-Anweisungen
Programme mit sys.exit() vorzeitig beenden
Ein kurzes Programm: Zahlen raten
Ein kurzes Programm: Stein, Schere, Papier
Zusammenfassung
Wiederholungsfragen
3Funktionen
Def-Anweisungen mit Parametern
Terminologie
Rückgabewerte und die Anweisung return
Der Wert None
Schlüsselwortargumente und print()
Der Aufrufstack
Lokaler und globaler Gültigkeitsbereich
Lokale Variablen können im globalen Gültigkeitsbereich nicht verwendet werden
Lokale Gültigkeitsbereiche können keine Variablen aus anderen lokalen Gültigkeitsbereichen verwenden
Globale Variablen können von einem lokalen Gültigkeitsbereich aus gelesen werden
Lokale und globale Variablen mit demselben Namen
Die Anweisung global
Ausnahmebehandlung
Ein kurzes Programm: Zickzackmuster
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Die Collatz-Folge
Eingabevalidierung
4Listen
Der Datentyp für Listen
Einzelne Elemente einer Liste mithilfe des Index abrufen
Negative Indizes
Teillisten mithilfe von Slices abrufen
Die Länge einer Liste mit len() abrufen
Werte in einer Liste mithilfe des Index ändern
Listenverkettung und -wiederholung
Elemente mit del aus einer Liste entfernen
Listen verwenden
Listen in for-Schleifen
Die Operatoren in und not in
Der Trick mit der Mehrfachzuweisung
Die Funktion enumerate() für Listen
Die Funktionen random.choice() und random.shuffle() für Listen
Erweiterte Zuweisungsoperatoren
Methoden
Elemente in einer Liste mit der Methode index() finden
Elemente mit den Methoden append() und insert() zu Listen hinzufügen
Elemente mit remove() aus Listen entfernen
Elemente in einer Liste mit sort() sortieren
Reihenfolge der Listeneinträge mit reverse() umkehren
Beispielprogramm: Magic 8 Ball mithilfe einer Liste
Sequenzielle Datentypen
Veränderbare und unveränderbare Datentypen
Der Datentyp für Tupel
Typen mit den Funktionen list() und tuple() umwandeln
Verweise
Identität und die Funktion id()
Verweise übergeben
Die Funktionen copy() und deepcopy() des Moduls copy
Ein kurzes Programm: Conways Spiel des Lebens
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Kommacode
Münzwurffolgen
Zeichenbildraster
5Dictionaries und Datenstrukturen
Der Datentyp für Dictionaries
Dictionaries und Listen im Vergleich
Die Methoden keys(), values() und items()
Das Vorhandensein eines Schlüssels oder Wertes im Dictionary ermitteln
Die Methode get()
Die Methode setdefault()
Saubere Ausgabe
Datenstrukturen zur Modellierung realer Objekte
Ein Tic-Tac-Toe-Brett
Verschachtelte Dictionaries und Listen
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Validierer für Schach-Dictionary
Inventar für ein Fantasyspiel
Eine Funktion zum Hinzufügen von Listeninhalten zum Inventar-Dictionary
6Stringbearbeitung
Umgang mit Strings
Stringliterale
Strings indizieren und Slices entnehmen
Die Operatoren in und not in für Strings
Strings in andere Strings einfügen
Nützliche Stringmethoden
Die Stringmethoden upper(), lower(), isupper() und islower()
Die isX-Stringmethoden
Die Stringmethoden startswith() und endswith()
Die Methoden join() und split()
Strings mit der Methode partition() aufteilen
Text mit rjust(), ljust() und center() ausrichten
Weißraum mit strip(), rstrip() und lstrip() entfernen
Die Funktionen ord() und chr() für numerische Zeichenwerte
Strings mit dem Modul pyperclip kopieren und einfügen
Projekt: Automatisierte Nachrichten mithilfe einer Mehrfach-Zwischenablage
Schritt 1: Programmdesign und Datenstrukturen
Schritt 2: Befehlszeilenargumente verarbeiten
Schritt 3: Die richtige Antwort kopieren
Projekt: Aufzählungspunkte zu einem Wiki-Markup hinzufügen
Schritt 1: Text von und zur Zwischenablage übertragen
Schritt 2: Textzeilen trennen und Sternchen hinzufügen
Schritt 3: Die veränderten Zeilen zusammenfügen
Ein kurzes Programm: Pig Latin
Zusammenfassung
Wiederholungsfragen
Übungsprojekt
Tabellenausgabe
Bots für Zombie Dice
Teil 2Aufgaben automatisieren
7Mustervergleich mit regulären Ausdrücken
Textmuster ohne reguläre Ausdrücke finden
Textmuster mithilfe regulärer Ausdrücke finden
Regex-Objekte erstellen
Vergleiche mit einem Regex-Objekt
Zusammenfassung: Mustervergleich mit regulären Ausdrücken
Weitere Möglichkeiten für den Mustervergleich mithilfe regulärer Ausdrücke
Gruppierung durch Klammern
Mithilfe der Pipe nach Übereinstimmungen mit mehreren Gruppen suchen
Optionale Übereinstimmung mit dem Fragezeichen
Mit dem Sternchen nach null oder mehr Übereinstimmungen suchen
Mit dem Pluszeichen nach einer oder mehr Übereinstimmungen suchen
Mit geschweiften Klammern nach einer genauen Zahl von Wiederholungen suchen
Gieriger und nicht gieriger Mustervergleich
Die Methode findall()
Zeichenklassen
Eigene Zeichenklassen bilden
Zirkumflex und Dollarzeichen
Das Jokerzeichen
Beliebige Übereinstimmungen mit Punkt-Stern finden
Zeilenumbrüche mit dem Punktsymbol finden
Übersicht über Regex-Symbole
Übereinstimmungen ohne Berücksichtigung der Groß- und Kleinschreibung
Strings mit der Methode sub() ersetzen
Umgang mit komplizierten regulären Ausdrücken
Die Variablen re.IGNORECASE, re.DOTALL und re.VERBOSE kombinieren
Projekt: Extraktionsprogramm für Telefonnummern und E-Mail-Adressen
Schritt 1: Einen regulären Ausdruck für Telefonnummern erstellen
Schritt 2: Einen regulären Ausdruck für E-Mail-Adressen erstellen
Schritt 3: Alle Überstimmungen im Inhalt der Zwischenablage finden
Schritt 4: Die gefundenen Übereinstimmungen zu einem String kombinieren
Das Programm ausführen
Ideen für ähnliche Programme
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Datumserkennung
Passwortstärke ermitteln
Regex-Version von strip()
8Eingabevalidierung
Das Modul PyInputPlus
Die Schlüsselwortargumente min, max, greaterThan und lessThan
Das Schlüsselwortargument blank
Die Schlüsselwortargumente limit, timeout und default
Die Schlüsselwortargumente allowRegexes und blockRegexes
Eine eigene Validierungsfunktion an inputCustom() übergeben
Projekt: Einen Trottel stundenlang beschäftigen
Projekt: Multiplikationstest
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Sandwichzubereiter
Ein eigenes Programm für den Multiplikationstest
9Dateien lesen und schreiben
Dateien und Dateipfade
Backslash unter Windows und Schrägstrich unter macOS und Linux
Pfade mit dem Operator / zusammenfügen
Das aktuelle Arbeitsverzeichnis
Das Benutzerverzeichnis
Absolute und relative Pfade
Neue Ordner mit os.makedirs() erstellen
Absolute und relative Pfade verwenden
Die Komponenten eines Dateipfads abrufen
Dateigrößen und Ordnerinhalte ermitteln
Eine Dateiliste mit Glob-Mustern bearbeiten
Die Gültigkeit von Pfaden prüfen
Dateien lesen und schreiben
Dateien mit der Funktion open() öffnen
Die Inhalte einer Datei lesen
Dateien schreiben
Variablen mit dem Modul shelve speichern
Variablen mit der Funktion pprint.pformat() speichern
Projekt: Zufallsgenerator für Tests
Schritt 1: Die Daten für den Test in einem Dictionary speichern
Schritt 2: Die Fragebogendatei erstellen und die Fragen mischen
Schritt 3: Die Auswahl der möglichen Antworten zusammenstellen
Schritt 4: Den Inhalt der Dateien für die Frage- und Lösungsbogen schreiben
Projekt: Aktualisierbare Mehrfach-Zwischenablage
Schritt 1: Kommentare und Vorbereitungen für die Shelf-Daten
Schritt 2: Den Inhalt der Zwischenablage unter einem Schlüsselwort speichern
Schritt 3: Schlüsselwörter auflisten und Inhalte laden
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Erweiterte Mehrfach-Zwischenablage
Lückentextspiel
Regex-Suche
10Dateien verwalten
Das Modul shutil
Dateien und Ordner kopieren
Dateien und Ordner verschieben und umbenennen
Dateien und Ordner unwiederbringlich löschen
Sicheres Löschen mit dem Modul send2trash
Einen Verzeichnisbaum durchlaufen
Dateien mit dem Modul zipfile komprimieren
ZIP-Dateien lesen
ZIP-Dateien entpacken
ZIP-Dateien erstellen und Inhalte hinzufügen
Projekt: Amerikanische Datumsangaben in Dateinamen in europäische Datumsangaben ändern
Projekt: Amerikanische Datumsangaben in Dateinamen in …
Schritt 1: Einen regulären Ausdruck für amerikanische Datumsangaben definieren
Schritt 2: Die einzelnen Teile der Datumsangabe in den Dateinamen ermitteln
Schritt 3: Die neuen Dateinamen zusammenstellen und die Dateien umbenennen
Vorschläge für ähnliche Programme
Projekt: Einen Ordner in einer ZIP-Datei sichern
Schritt 1: Den Namen der ZIP-Datei bestimmen
Schritt 2: Die neue ZIP-Datei erstellen
Schritt 3: Den Verzeichnisbaum durchlaufen und Inhalte zur ZIP-Datei hinzufügen
Vorschläge für ähnliche Programme
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Selektives Kopieren
Nicht mehr benötigte Dateien löschen
Lücken entfernen
11Debugging
Ausnahmen auslösen
Traceback als String abrufen
Zusicherungen (Assertions)
Zusicherungen in einem Ampelsimulator
Protokollierung
Das Modul logging verwenden
Kein Debugging mit print()
Protokolliergrade
Die Protokollierung deaktivieren
Protokollierung in eine Datei
Der Debugger von Mu
Continue
Step In
Step Over
Step Out
Stop
Debugging eines Additionsprogramms
Haltepunkte
Zusammenfassung
Wiederholungsfragen
Übungsprojekt
Münzwurfprogramm
12Web Scraping
Projekt: mapIt.py mit dem Modul webbrowser
Schritt 1: Die URL herausfinden
Schritt 2: Befehlszeilenargumente verarbeiten
Schritt 3: Den Inhalt der Zwischenablage verarbeiten und den Browser starten
Vorschläge für ähnliche Programme
Dateien mithilfe des Moduls requests aus dem Web herunterladen
Eine Webseite mit der Funktion requests.get() herunterladen
Auf Fehler prüfen
Heruntergeladene Dateien auf der Festplatte speichern
HTML
Quellen zu HTML
Ein kleiner Auffrischungskurs
Den HTML-Quellcode einer Webseite einsehen
Die Entwicklertools des Browsers öffnen
HTML-Elemente mithilfe der Entwicklertools finden
HTML mit dem Modul bs4 durchsuchen
Ein BeautifulSoup-Objekt aus dem HTML-Text erstellen
Elemente mit der Methode select() finden
Daten aus den Attributen eines Elements abrufen
Projekt: Alle Suchergebnisse öffnen
Schritt 1: Die Befehlszeilenargumente abrufen und die Suchergebnisseite anfordern
Schritt 2: Alle Ergebnisse finden
Schritt 3: Browsertabs für jedes Suchergebnis öffnen
Vorschläge für ähnliche Programme
Projekt: Alle XKCD-Comics herunterladen
Schritt 1: Den Aufbau des Programms festlegen
Schritt 2: Die Webseite herunterladen
Schritt 3: Das Bild des Comics finden und herunterladen
Schritt 4: Das Bild speichern und den vorherigen Comic suchen
Vorschläge für ähnliche Programme
Den Browser mit dem Modul selenium steuern
Einen seleniumgesteuerten Browser starten
Elemente auf der Seite finden
Auf Elemente klicken
Formulare ausfüllen und absenden
Die Betätigung von Sondertasten simulieren
Auf Browserschaltflächen klicken
Weitere Informationen über Selenium
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
E-Mail-Programm für die Befehlszeile
Downloadprogramm für Fotowebsites
2048
Linküberprüfung
13Excel-Arbeitsblätter
Excel-Dokumente
Das Modul openpyxl installieren
Excel-Dokumente lesen
Excel-Dokumente mit OpenPyXL öffnen
Arbeitsblätter aus der Arbeitsmappe abrufen
Zellen eines Arbeitsblatts abrufen
Umrechnen zwischen Kennbuchstaben und Nummern
Zeilen und Spalten eines Arbeitsblatts abrufen
Arbeitsmappen, Arbeitsblätter und Zellen
Projekt: Daten in einer Arbeitsmappe lesen
Schritt 1: Die Daten der Arbeitsmappe lesen
Schritt 2: Die Datenstruktur füllen
Schritt 3: Die Ergebnisse in eine Datei schreiben
Vorschläge für ähnliche Programme
Excel-Dokumente schreiben
Excel-Dokumente erstellen und speichern
Arbeitsblätter erstellen und entfernen
Werte in Zellen schreiben
Projekt: Ein Arbeitsblatt aktualisieren
Schritt 1: Eine Datenstruktur mit den neuen Informationen einrichten
Schritt 2: Alle Zeilen prüfen und die falschen Preise korrigieren
Vorschläge für ähnliche Programme
Die Schrift in den Zellen gestalten
Font-Objekte
Formeln
Das Erscheinungsbild von Zeilen und Spalten festlegen
Zeilenhöhe und Spaltenbreite festlegen
Zellen verbinden und aufteilen
Bereiche fixieren
Diagramme
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Multiplikationstabellen erstellen
Leere Zeilen einfügen
Zellen transponieren
Textdateien in Arbeitsblätter umwandeln
Arbeitsblätter in Textdateien umwandeln
14Google Tabellen
EZSheets installieren und einrichten
Anmeldeinformationen und Tokendateien beziehen
Die Datei mit den Anmeldeinformationen widerrufen
Spreadsheet-Objekte
Tabellen erstellen, hochladen und auflisten
Tabellenattribute
Tabellen hoch- und herunterladen
Tabellen löschen
Sheet-Objekte
Daten lesen und schreiben
Tabellenblätter erstellen und löschen
Tabellenblätter kopieren
Grenzwerte für Google Tabellen
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Daten von Google Formulare herunterladen
Tabellen in andere Formate umwandeln
Fehler in einer Tabelle finden
15PDF- und Word-Dokumente
PDF-Dokumente
Text aus PDFs entnehmen
PDFs entschlüsseln
PDFs erstellen
Projekt: Ausgewählte Seiten aus mehreren PDFs kombinieren
Schritt 1: Alle PDF-Dateien finden
Schritt 2: Die einzelnen PDFs öffnen
Schritt 3: Die einzelnen Seiten hinzufügen
Schritt 4: Die Ergebnisse speichern
Vorschläge für ähnliche Programme
Word-Dokumente
Word-Dokumente lesen
Den kompletten Text einer .docx-Datei abrufen
Absätze und Run-Objekte formatieren
Word-Dokumente mit anderen als den Standardformaten erstellen
Run-Attribute
Word-Dokumente schreiben
Überschriften hinzufügen
Zeilenwechsel und Seitenumbrüche hinzufügen
Bilder einfügen
PDF-Dateien aus Word-Dokumenten erstellen
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
PDF-Paranoia
Personalisierte Einladungen als Word-Dokument
Brute-Force-Passwortknacker für PDFs
16CSV-Dateien und JSON-Daten
Das Modul csv
Reader-Objekte
Daten in einer for-Schleife aus reader-Objekten lesen
Writer-Objekte
Die Schlüsselwortargumente delimiter und lineterminator
DictReader- und DictWriter-Objekte
Projekt: Kopfzeilen aus CSV-Dateien entfernen
Schritt 1: Alle CSV-Dateien durchlaufen
Schritt 2: Die CSV-Datei lesen
Schritt 3: Die CSV-Datei ohne die erste Zeile schreiben
Vorschläge für ähnliche Programme
JSON und APIs
Das Modul json
JSON-Daten mit der Funktion loads() laden
JSON-Daten mit der Funktion dumps() schreiben
Projekt: Die aktuellen Wetterdaten abrufen
Schritt 1: Den Standort aus dem Befehlszeilenargument entnehmen
Schritt 2: Die JSON-Daten herunterladen
Schritt 3: JSON-Daten laden und die Wettervorhersage ausgeben
Vorschläge für ähnliche Programme
Zusammenfassung
Wiederholungsfragen
Übungsprojekt
Excel-in-CSV-Konverter
17Zeit und Aufgabenplanung
Das Modul time
Die Funktion time.time()
Die Funktion time.sleep()
Zahlen runden
Projekt: Superstoppuhr
Schritt 1: Das Programm auf die Zeitmessung vorbereiten
Schritt 2: Intervalldauern messen und anzeigen
Vorschläge für ähnliche Programme
Das Modul datetime
Der Datentyp timedelta
Anhalten bis zu einem bestimmten Zeitpunkt
datetime-Objekte in Strings umwandeln
Strings in datetime-Objekte umwandeln
Die Zeitfunktionen von Python im Überblick
Multithreading
Argumente an die Zielfunktion eines Threads übergeben
Probleme der Nebenläufigkeit
Projekt: Multithread-Version des XKCD-Downloadprogramms
Schritt 1: Eine Funktion für den Download verwenden
Schritt 2: Threads erstellen und starten
Schritt 3: Auf das Ende aller Threads warten
Andere Programme von Python aus starten
Befehlszeilenargumente an Popen() übergeben
Taskplaner, launchd und cron
Websites mit Python aufrufen
Andere Python-Skripte ausführen
Dateien in ihren Standardanwendungen öffnen
Projekt: Ein einfaches Countdown-Programm
Schritt 1: Der Countdown
Schritt 2: Die Klangdatei abspielen
Vorschläge für ähnliche Programme
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Elegantere Stoppuhr
Webcomic-Downloadprogramm mit Zeitplanung
18E-Mails und Textnachrichten
E-Mails mit der Gmail-API senden und empfangen
Die Gmail-API aktivieren
E-Mails von einem Gmail-Konto senden
E-Mails in einem Gmail-Konto lesen
E-Mails in einem Gmail-Konto suchen
Anhänge von einem Gmail-Konto herunterladen
SMTP
E-Mails senden
Verbindung mit einem SMTP-Server aufnehmen
Die »Hallo«-Nachricht an den SMTP-Server senden
Die TLS-Verschlüsselung einleiten
Am SMTP-Server anmelden
Eine E-Mail senden
Die Verbindung zum SMTP-Server trennen
IMAP
E-Mails mit IMAP abrufen und löschen
Verbindung mit einem IMAP-Server aufnehmen
Am IMAP-Server anmelden
Nach E-Mails suchen
E-Mails abrufen und als gelesen markieren
E-Mail-Adressen aus einer Rohnachricht gewinnen
Den Rumpf aus einer Rohnachricht gewinnen
E-Mails löschen
Die Verbindung zum IMAP-Server trennen
Projekt: E-Mails über ausstehende Mitgliedsbeiträge senden
Schritt 1: Die Excel-Datei öffnen
Schritt 2: Alle säumigen Mitglieder finden
Schritt 3: Personalisierte E-Mail-Mahnungen senden
Textnachrichten über SMS-E-Mail-Gateways senden
Textnachrichten mit Twilio senden
Ein Twilio-Konto einrichten
Textnachrichten senden
Projekt: Das Modul »Just Text Me«
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Zufällige Zuweisung von Arbeiten
Regenschirmhinweis
Automatischer Entregistrierer
Den Computer per E-Mail steuern
19Bildbearbeitung
Grundlagen zur Bilddarstellung auf Computern
Farben und RGBA-Werte
Koordinaten und Rechtecktupel
Bildbearbeitung mit Pillow
Mit dem Datentyp Image arbeiten
Bilder beschneiden
Bilder kopieren und in andere Bilder einfügen
Die Bildgröße ändern
Bilder drehen und spiegeln
Einzelne Pixel ändern
Projekt: Ein Logo hinzufügen
Schritt 1: Das Logobild öffnen
Schritt 2: Alle Dateien durchlaufen und die Bilder öffnen
Schritt 3: Die Bildgröße ändern
Schritt 4: Logo hinzufügen und Änderungen speichern
Vorschläge für ähnliche Programme
Bilder zeichnen
Formen zeichnen
Text zeichnen
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Das Logoprogramm erweitern und verbessern
Fotoordner auf der Festplatte finden
Personalisierte Tischkarten
20GUI-Automatisierung
Das Modul PyAutoGUI installieren
Zugriff auf macOS erlauben
Kleine Probleme beheben
Die PyAutoGUI-Notfallsicherung
Beenden durch Abmelden
Den Mauszeiger steuern
Den Mauszeiger bewegen
Die Position des Mauszeigers abrufen
Mausinteraktionen
Klicken
Ziehen
Scrollen
Mausbewegungen planen
Auf dem Bildschirm arbeiten
Einen Screenshot aufnehmen
Einen Screenshot analysieren
Bilderkennung
Informationen über das Fenster abrufen
Das aktive Fenster abrufen
Andere Möglichkeiten zum Abrufen von Fenstern
Fenster bearbeiten
Die Tastatur steuern
Strings von der Tastatur senden
Tastennamen
Tasten drücken und loslassen
Tastenkombinationen
GUI-Automatisierungsskripte einrichten
Übersicht über die Funktionen von PyAutoGUI
Projekt: Formulare automatisch ausfüllen
Schritt 1: Den Ablauf herausfinden
Schritt 2: Die Koordinaten ermitteln
Schritt 3: Daten eingeben
Schritt 4: Auswahllisten und Optionsschalter
Schritt 5: Das Formular absenden und warten
Dialogfelder anzeigen
Zusammenfassung
Wiederholungsfragen
Übungsprojekte
Beschäftigung vortäuschen
Textfelder über Zwischenablage lesen
Instant-Messenger-Bot
Tutorial für einen Spiele-Bot
Anhang
A Drittanbietermodule installieren
Pip
Drittanbietermodule installieren
Module für Mu installieren
B Programme ausführen
Programme im Terminalfenster ausführen
Python-Programme unter Windows ausführen
Python-Programme unter macOS ausführen
Programme unter Ubuntu Linux ausführen
Python-Programme mit ausgeschalteten Zusicherungen ausführen
C Antworten auf die Wiederholungsfragen
Kapitel 1
Kapitel 2
Kapitel 3
Kapitel 4
Kapitel 5
Kapitel 6
Kapitel 7
Kapitel 8
Kapitel 9
Kapitel 10
Kapitel 11
Kapitel 12
Kapitel 13
Kapitel 14
Kapitel 15
Kapitel 16
Kapitel 17
Kapitel 18
Kapitel 19
Kapitel 20
Stichwortverzeichnis
Für meinen Neffen Jack
Al Sweigart ist Softwareentwickler und Fachbuchautor. Seine Lieblingsprogrammiersprache ist Python und er hat bereits mehrere Open-Source-Module dafür entwickelt. Seine anderen Bücher sind auf seiner Website http://www.inventwithpython.com/ unter einer Creative-Commons-Lizenz kostenlos erhältlich. Seine Katze wiegt 11 Pfund.
Philip James arbeitet schon mehr als zehn Jahre mit Python und tritt in der Python-Community häufig als Redner zu unterschiedlichen Themen von Unix-Grundlagen bis zu Social Media auf Open-Source-Basis auf. Er ist einer der Hauptbeteiligten am BeeWare-Projekt und lebt mit seiner Partnerin Nic und deren Katze River in der Bay Area von San Francisco.
Es ist irreführend, dass nur mein Name auf dem Umschlag steht, denn um dieses Buch schreiben zu können, habe ich die Hilfe vieler Menschen benötigt. Ich möchte meinem Herausgeber Bill Pollock, meinen Lektoren Laurel Chun, Leslie Shen, Greg Poulos, Jennifer Griffith-Delgado und Frances Saux sowie allen anderen Mitarbeitern bei No Starch Press für ihre unschätzbare Hilfe danken. Ein Dank geht auch an meine Fachgutachter Ari Lacenski und Philip James für ihre hervorragenden Vorschläge und Verbesserungen sowie für ihre Unterstützung.
Vielen Dank auch allen Mitgliedern der Python Software Foundation für ihre großartige Arbeit. Die Python-Community ist die beste, die ich in der IT-Branche gefunden habe.
Schließlich möchte ich noch meiner Familie, meinen Freunden und der Clique bei Shotwell’s danken, weil sie es mir nicht übel genommen haben, dass ich während des Schreibens an diesem Buch dauernd beschäftigt war. Dankeschön!
»Du hast gerade in zwei Stunden das erledigt, woran wir drei sonst zwei Tage lang sitzen!«
Mein Mitbewohner in den frühen 2000er-Jahren arbeitete bei einem Elektronikhändler, bei dem gelegentlich eine Tabelle mit Tausenden von Produktpreisen anderer Läden auftauchte. Drei Mitarbeiter druckten diese Tabelle dann auf einem dicken Stapel Papier aus und teilten diesen unter sich auf. Für jeden Produktpreis schlugen sie den Preis ihres eigenen Arbeitgebers nach und notierten alle Produkte, die die Konkurrenz billiger anbot. Damit waren sie gewöhnlich zwei Tage beschäftigt.
»Wenn ich die Originaldatei bekomme, kann ich ein Programm schreiben, das die Arbeit für euch erledigt«, schlug mein Mitbewohner ihnen vor, als er sah, wie sie inmitten eines Riesenhaufens Papier auf dem Fußboden hockten.
Nach ein paar Stunden hatte er ein kurzes Programm geschrieben, das die Preisliste der Konkurrenten aus der Datei auslas, die Produkte in der Datenbank des Elektronikladens nachschlug und einen Vermerk machte, wenn die Konkurrenz billiger war. Er war immer noch ein Anfänger in Sachen Programmierung und hatte den Großteil dieser Stunden damit zugebracht, die Dokumentation in einem Programmierbuch nachzuschlagen. Die Ausführung des fertigen Programms dauerte nur wenige Sekunden. An dem Tag gönnten sich mein Mitbewohner und seine Kollegen eine besonders lange Mittagspause.
Das zeigt das Potenzial der Programmierung. Ein Computer ist wie ein Schweizer Messer und lässt sich für zahllose Aufgaben einrichten. Viele Leute bringen Stunden mit Klicken und Tippen zu, um monotone Aufgaben auszuführen, ohne zu ahnen, dass der Computer diese Arbeit in wenigen Sekunden erledigen könnte, wenn er nur die richtigen Anweisungen dafür bekäme.
Software bildet die Grundlage vieler unserer Geräte, die wir für die Arbeit und in der Freizeit verwenden: Fast jeder nutzt soziale Netzwerke zur Kommunikation, die Telefone vieler Menschen enthalten Computer mit Internetzugriff und für die meisten Büroarbeiten ist Computerarbeit erforderlich. Daher ist die Nachfrage nach Personen, die programmieren können, sprunghaft angestiegen. Unzählige Bücher, interaktive Webtutorials und Schulungen für Entwickler werden mit dem Versprechen beworben, ehrgeizige Anfänger zu Softwareingenieuren zu machen, die sechsstellige Gehälter verlangen können.
Dieses Buch ist jedoch nicht für diese Leute gedacht, sondern für alle anderen.
Mit diesem Buch allein können Sie nicht zu einem professionellen Softwareentwickler werden, genauso wenig, wie ein paar Gitarrenstunden Sie zu einem Rockstar machen. Wenn Sie aber Büroangestellter, Administrator oder Akademiker sind oder auch nur zur Arbeit oder zum Vergnügen einen Computer benutzen, so werden Sie hier die Grundlagen der Programmierung kennenlernen, um einfache Aufgaben wie die folgenden zu automatisieren: