python.casapython.casa
Home
  • Thema 1 - Einführung Programmiersprache
  • Thema 2 - Variablen und Datentypen
  • Thema 3 - Boolsche Algebra und Zeichenketten
  • Thema 4 - Datum und Zeit
  • Thema 5 - Kontrollstrukturen und Listen
  • Thema 6 - Funktionen und Flowcharts
  • Thema 7 - Objektorientierte Programmierung
  • Thema 8 - Ein- und Ausgabe
  • Thema 9 - Module und Import
  • Thema 10 - Datenbanken
  • Thema 11 - Grafische Benutzeroberfläche
  • Thema 12 - Webapplikation mit Python Flask
  • Thema 13 - Versionskontrolle mit Git
  • Thema 14 - Dokumentation mit Markdown
  • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
GitHub
Home
  • Thema 1 - Einführung Programmiersprache
  • Thema 2 - Variablen und Datentypen
  • Thema 3 - Boolsche Algebra und Zeichenketten
  • Thema 4 - Datum und Zeit
  • Thema 5 - Kontrollstrukturen und Listen
  • Thema 6 - Funktionen und Flowcharts
  • Thema 7 - Objektorientierte Programmierung
  • Thema 8 - Ein- und Ausgabe
  • Thema 9 - Module und Import
  • Thema 10 - Datenbanken
  • Thema 11 - Grafische Benutzeroberfläche
  • Thema 12 - Webapplikation mit Python Flask
  • Thema 13 - Versionskontrolle mit Git
  • Thema 14 - Dokumentation mit Markdown
  • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
GitHub
  • Stundenplan
  • Teil 1

    • Thema 1 - Einführung Programmiersprache
      • Slides Thema 1
      • Übungen Thema 1
    • Thema 2 - Variablen und Datentypen
      • Slides Thema 2
      • Übungen Thema 2
    • Thema 3 - Boolsche Algebra und Zeichenketten
      • Slides Thema 3
      • Übungen Thema 3
    • Thema 4 - Datum und Zeit
      • Slides Thema 4
      • Übungen Thema 4
    • Thema 5 - Kontrollstrukturen und Listen
      • Slides Thema 5
      • Übungen Thema 5
    • Thema 6 - Funktionen und Flowcharts
      • Slides Thema 6
      • Übungen Thema 6
    • Thema 7 - Objektorientierte Programmierung
      • Slides Thema 7
      • Übungen Thema 7
    • Thema 8 - Ein- und Ausgabe
      • Slides Thema 8
        • Ein- und Ausgabe
          • Lernziele
          • Achtung
          • Dateisystem
          • Hierarchie Linux
          • Python Pathlib
          • IDE vorbereiten
          • Aktuelles Verzeichnis ausgeben
          • Name des aktuellen Verzeichnis ausgeben
          • Fehlerbehandlung
          • try and except
          • Exception als Variable
          • Aufgaben 1
          • Fehler beim Zugriff auf Dateisystem
          • Vorgehen Datei schreiben
          • Textdatei schreiben
          • Textdatei lesen
          • Unstrukturiert vs. Strukturiert
          • JSON-Datenformat
          • JSON-Beispieldatei
          • with Statement
          • JSON-Dateien verarbeiten
          • JSON verabeiten
          • Dateiformate
          • CSV-Dateiformat
          • CSV-Datei schreiben
          • Mit Tabellenkalkulationsprogramm öffnen
          • CSV-Datei lesen
          • Aufgaben 2
          • Dateien übertragen
          • Dokumente im WWW
          • HTTP-Protokoll
          • HTTP-Request anzeigen
          • HTTP-Request Beispiel
          • HTML-Dokument
          • HTML
          • Browser rendert HTML
          • HTML-Dokument erstellen
          • HTML-Tag
          • HTTP-Request mit Python
          • HTML-Paket installieren
          • HTML-Dokument erstellen
          • HTML-Dokument im Browser öffnen
          • Aufgaben 3
          • Review
      • Übungen Thema 8
  • Teil 2

    • Thema 9 - Module und Import
      • Slides Thema 9
      • Übungen Thema 9
    • Thema 10 - Datenbanken
      • Slides Thema 10
      • Übungen Thema 10
    • Thema 11 - Grafische Benutzeroberfläche
      • Slides Thema 11
      • Übungen Thema 11
    • Thema 12 - Webapplikation mit Python Flask
      • Slides Thema 12
      • Übungen Thema 12
    • Thema 13 - Versionskontrolle mit Git
      • Slides Thema 13
      • Übungen Thema 13
    • Thema 14 - Dokumentation mit Markdown
      • Slides Thema 14
    • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
      • Slides Thema 15
      • Übungen Thema 15
  • Prüfung

    • Wissensprüfung 1
    • Wissensprüfung 2
    • Leistungsnachweis

Slides Thema 8

Ein- und Ausgabe

◀️ Thema 8

⚡Anwesenheit bestätigen

📖 Kapitel 10 Umgang mit Fehlern (Exceptions)
📖 Kapitel 14 Dateien lesen und schreiben
📖 Kapitel 15 Netzwerkfunktionen


Lernziele

Ich kann ...

  • Fehler abfangen und behandeln.
  • Text-Dateien schreiben, lesen und verarbeiten.
  • HTTP-Requests mit Python senden und empfangen.
  • HTML-Dokumente lesen und schreiben.

Achtung

Es werden einige neue Themen angeschnitten.
Unbedingt melden, bevor es eine Crash gibt!


Dateisystem

Auf dem Computer gibt es Dateien, Ordner und Metadaten (Erstellt am, Berechtigungen, Koordinaten, etc.).

Eine Datei liegt in einem Ordner. Die Datei und Ordner haben Metdaten.

Das Dateisystem ist hierarchisch aufgebaut.


Hierarchie Linux

ℹ️ Auf Linux ist der oberste Ordner der / Root und bei Windows das C:\ Laufwerk


Python Pathlib

In der Python-Biblitothek finden Sie pathlib. Mit Pathlib können Sie mit dem Dateisystem interagieren.


IDE vorbereiten

🎬 Führen Sie diese Aktionen aus:

  • Neuer Ordner Thema8 erstellen
  • Neue Datei Verzeichnisse.py in Ordner erstellen

Aktuelles Verzeichnis ausgeben

🎬 Diesen Code einfügen uns ausgeben.

from pathlib import Path
current = Path.cwd() # cwd bedeutet Current Work Directory, sprich das aktuelle Arbeitsverzeichnis
print('Aktuelles Verzeichnis:', current.absolute())

ℹ️ Der Rückgabewert von Path.cwd().absolute() ist ein Objekt.


Name des aktuellen Verzeichnis ausgeben

Erweitern Sie das Beispiel mit:

print(type(current)) # Ausgabe Objekttyp
print('Aktueller Verzeichnisname:', current.name)

Fehlerbehandlung

Wenn eine Python-Anweisung einen Fehler generiert, können Sie darauf reagieren. Damit verhindern, dass das Programm abstürtzt.

🎬 Erstellen Sie die Datei Error.py mit diesem Code:

ergebnis = 1/0
print(ergebnis)

Die zweite Zeile wird nicht erreicht. Python gibt den Fehlertyp ZeroDivisionError aus und bricht das Programm ab.


try and except

Mit den Befehlen try und except kann man versuchen eine Code-Block auszuführen (try) und wenn es ein Fehler entsteht führt man den Ausnahme-Block (catch) aus.

🎬 Ersetzen Sie den vorhergehenden Inhalt mit:

try:
    ergebnis = 1/0
    print(ergebnis)
except ZeroDivisionError:
    print("Durch Null teilen ist nicht möglich.")

Exception als Variable

🎬 Erstellen Sie die Datei Except.py mit diesem Code:

try:
    print(z)
except NameError as error:
    print(error)
    
try:
    print(z)
except:
    print("Ein Fehler im Code.")

Aufgaben 1

Lösen Sie die Aufgaben 8.1 und 8.2.

⚡Aufteilung in Gruppen/Breakout-Rooms ⏱️ 10 Minuten


Fehler beim Zugriff auf Dateisystem

Der Umgang mit Fehler ist beim Zugriff auf das Dateisystem besonders wichtig.

Es gibt viele Fehlerquellen: ungültiger Pfad, Schreibschutz, ungültiger Dateiname, etc.


Vorgehen Datei schreiben

Wir möchten nun mit Python eine Datei schreiben. Ähnlich wie bei Word müssen Sie wie folgt vorgehen:

  1. Datei erstellen und öffnen (open)
  2. Datei bearbeiten (write)
  3. Datei schliessen und speichern (close)

Textdatei schreiben

🎬 Erstellen Sie die Datei Schreiben.py mit diesem Code:

try:
    f = open('test.txt', 'w')
    f.write('Lorem ipsum dolor sit amet, ...\n')
    f.write('Unicode äöüß✅ \n')
    f.close()
  
except BaseException as err:
    print('Fehler:', err)

ℹ️ Der Fehlertyp BaseException ist die Superklasse aller Fehlertypen. Das w bedeute Write.


Textdatei lesen

Die Zeilen einer existierenden Datei können Sie auslesen.

🎬 Erstellen Sie die Datei Lesen.py mit diesem Code:

try:
    f = open('test.txt')
    for line in f:
        print(line, end='')
    f.close() 
  
except BaseException as err:
    print('Fehler:', err)

Unstrukturiert vs. Strukturiert

Wir haben eine unstrukturierte Textdatei erstellt. Im Umgang mit Daten und Kalkulationen brauchen wir ein besseres Format.


JSON-Datenformat

  • JavaScript Object Notation (JSON)
  • Beliebtestes Format für hierarchische Datenstrukturen
  • Syntax nahezu Deckungsgleich mit Listen und Dictionaries

JSON-Beispieldatei

🎬 Erstellen Sie die Datei Bücher.json mit diesem Inhalt:

[
    {
        "title": "Raspberry Pi",
        "isbn": "978-3836265195",
        "authors": [
            "Kofler",
            "Scherbeck",
            "Kühnast"
        ]
    },
    {
        "title": "Docker",
        "isbn": "978-3836261760",
        "authors": [
            "Öggl",
            "Kofler"
        ]
    }
]

ℹ️ Die Datenstruktur ist ähnlich zu der von Python.


with Statement

Das Lesen und Schreiben von Dateien mit Fehlerbehandlung kann mit dem with Statement vereinfacht werden.

# Ohne with statement und ohne Fehlerbehandlung
file = open('file_path', 'w')
file.write('hello world !')
file.close()
 
# Ohne with statement mit Fehlerbehandlung
file = open('file_path', 'w')
try:
    file.write('hello world')
finally:
    file.close()

# Mit with statement 
with open('file_path', 'w') as file:
    file.write('hello world !')

Das with Statement schliesst die Datei automatisch.

ℹ️ Beim verwenden von with werden die Objekt-Methode __enter__() und __exit__() aufgerufen.


JSON-Dateien verarbeiten

🎬 Datei JSON.py mit diesem Code ausführen:

import json
with open('Bücher.json') as f:
    data = json.load(f)
print(data)

JSON verabeiten

Der JSON-Inhalt kann ganz einfach verarbeitet werden.

🎬 Fügen Sie diesen Code an:

for book in data:
	print(f"Titel: {book['title']}")
	for author in book['authors']:
		print(f"Author: {author}")
	print('')

Dateiformate

Möchten Sie die Datei Bücher.json in einem anderen Programm, beispielsweise Excel bearbeiten wird es schwierig. Wir brauchen ein einheitliches Dateiformat.


CSV-Dateiformat

  • Comma-separated values (CSV)
  • Textdatei zur Speicherung strukturierter Daten
  • Kann mit jeder Tabellekalkulations-Software bearbeitet werden

CSV-Datei schreiben

🎬 Erstellen Sie die Datei CSV.py und fügen Sie diesen Code ein:

import csv

with open('Mitarbeiter.csv', 'w') as file:

	# Um ein CSV zu schreiben, braucht es einen sogennanten Writer
    file_writer = csv.writer(file, delimiter=',', quotechar='"')

    # Die erste Zeile enthält die Tabellenüberschriften
    file_writer.writerow(['Name', 'Abteilung', 'Geboren im'])
    file_writer.writerow(['Peter Lustig', 'Buchhaltung', 'November'])
    file_writer.writerow(['Erika Meier', 'IT', 'März'])

ℹ️ Die erstellte Datei Mitarbeiter.csv kann mit einem Texteditor geöffnet werden.


Mit Tabellenkalkulationsprogramm öffnen

Die erstellte Datei können Sie mit anderen Programmen öffnen und bearbeiten.

🎬 Öffnen Sie die Datei Mitarbeiter.csv mit einem Tabellenkalkulationsprogramm wie Excel.


CSV-Datei lesen

Natürlich können Sie die Datei mit Python wieder auslesen.

🎬 Fügen Sie diesen Code an:

with open('Mitarbeiter.csv', newline='') as file:

	# Dieses mal braucht es einen Reader
    file_reader = csv.reader(file, delimiter=',', quotechar='"')
    
    line_count = 0
    for row in file_reader:
    
        # Erste Zeile enthält Tabellenüberschriften
        if line_count == 0:
            print(f'Spaltennamen sind {", ".join(row)}')
        else:
            print(f'{row[0]} arbeitet in der Abteilung {row[1]} und ist geboren im {row[2]}.')
        line_count += 1
            
    print(f'{line_count} Zeilen wurden verarbeitet.')

Aufgaben 2

Lösen Sie die Aufgaben 8.3 und 8.4.

⚡Aufteilung in Gruppen/Breakout-Rooms ⏱️ 10 Minuten


Dateien übertragen

Dateien wie wir Sie gerade erstellt und gelesen haben, können über ein Netzwerk zwischen Computer übertragen werden.

Das Internet ist ein weltumspannendes Netzwerk von Computern.


Dokumente im WWW

Eine Website ist nur ein Dokument. Das World Wide Web (WWW) bezeichnet alle Websites.

Mit Kommunikationsprotokoll HTTP laden Computer Websites als Dokumente herunter und zeigen diese im Browser an.


HTTP-Protokoll

  • Hypertext Transfer Protocol (HTTP)
  • Kommunikationsprotokoll für das WWW
  • Browser rufen Webseiten über HTTP auf


HTTP-Request anzeigen

🎬 Zur Betrachtung eines HTTP-Requests führen Sie folgende Aktionen aus:

  • Browser und einen leeren Tab öffnen
  • Mit F12 die Entwicklerkonsole aufrufen
  • In der Konsole die Ansicht Netzwerk anzeigen
  • In der Adressleiste https://example.com eingeben
  • Den HTTP-Request mit Status 200 und Methode GET anklicken

HTTP-Request Beispiel

Der HTML-Code der Webseite wird als HTTP-Response zurückgegeben.


HTML-Dokument

Wird eine Website aufgerufen erhalten wir ein HTML-Dokument als Antwort.

<!doctype html>
<html>
	<head></head>
	<body>
		<div>
			<h1>Example Domain</h1>
		    <p>This domain is for use in illustrative examples in documents. You may use this
		    domain in literature without prior coordination or asking for permission.</p>
		    <p><a href="https://www.iana.org/domains/example">More information...</a></p>
		</div>
	</body>
</html>

ℹ️ Bei HTML handelt es sich um eine Markup-Sprache.


HTML

  • Hypertext Markup Language (HTML)
  • Auszeichnungssprache für strukturierte Dokumente
  • Wird von Browser visuell dargestellt
  • Grundlage des WWW

Browser rendert HTML

HTML beschreibt wie ein Dokument aussieht und der Browser stellt es entsprechend dar. Diesen Vorgang nennt man Rendern.

browser-rendern


HTML-Dokument erstellen

🎬 Erstellen Sie selber ein HTML-Dokument Dokument.html mit diesem Inhalt:

<!doctype html>
<html>
	<body>
		<div>
		    <h1>Meine Website</h1>
		    <p>Das ist ein Paragraph</p>
		    <p><a href="https://python.casa">Hier lernst du aller über Python.</a></p>
		</div>
	</body>
</html>

🎬 Öffnen Sie die Datei Dokument.html im Browser.


HTML-Tag

Ein kurze Übersicht zu den HTML-Tags.

  • html: Zeigt den Beginnt des HTML-Dokument an
  • body: Hier beginnt der Seiteninhalt
  • div: Ein Block zum platzieren der Inhalte
  • h1: Überschrift auf Stufe 1
  • p: Ein Textabsatz
  • a: Ein Link

HTTP-Request mit Python

HTML-Dokumente könen mit Python heruntergeladen werden.

🎬 Erstellen Sie die Datei HTTP.py und fügen Sie diesen Code ein:

from urllib import request

# HTTP-Request ausführen
url = 'http://example.com'
response = request.urlopen(url)
binary = response.read() # Download durchführen
html = binary.decode('utf-8') # Dokument muss decodiert werden

with open('index.html', 'w') as file:
    file.write(html)

🎬 Öffnen Sie die Datei index.html im Browser.


HTML-Paket installieren

Damit man mit Python ein HTML-Dokument erstellen kann, braucht es ein zusätzliches Python-Paket.

🎬 Öffnen Sie das Terminal und geben Sie den Befehl pip install yattag ein.

janikvonrotz@pop-os:~/python.casa/topic-8$ pip install yattag
Defaulting to user installation because normal site-packages is not writeable
Collecting yattag
  Downloading yattag-1.15.0.tar.gz (28 kB)
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: yattag
  Building wheel for yattag (setup.py) ... done
  Created wheel for yattag: filename=yattag-1.15.0-py3-none-any.whl size=15634 sha256=5a394824217c9df6abb778e0fe0f7967a0dc36eb437dbc7898a7942ae83b6874
  Stored in directory: /home/janikvonrotz/.var/app/com.vscodium.codium/cache/pip/wheels/3f/26/73/af44f191823890a774bebcf7d472b019546e944638358cc38a
Successfully built yattag
Installing collected packages: yattag
Successfully installed yattag-1.15.0

Mehr zu pip und Python-Pakete erfahren Sie im Thema 9.


HTML-Dokument erstellen

Mit Yattag können Sie HTML-Dokumente erstellen

🎬 Erstellen Sie die Datei HTML.py und fügen Sie diesen Code ein:

from yattag import Doc

# HTML-Funktionen abrufen
doc, tag, text = Doc().tagtext()

# HTML-Dokument mit Elementen erstellen
with tag('html'):
    with tag('body'):
        with tag('p', id = 'main'):
            text('Beispiel')
        with tag('a', href='https://example.com'):
            text('Linktext')

# HTML-Code generieren
html = doc.getvalue()

# HTML-Dokument schreiben
with open('example.html', 'w') as file:
    file.write(html)

HTML-Dokument im Browser öffnen

🎬 Fügen Sie diesen Code an, um die Datei direkt im Browser zu öffnen:

# Die HTML-Dokument im Browser aufrufen
import webbrowser
from pathlib import Path
webbrowser.open('file://' + str(Path('example.html').absolute()))

Aufgaben 3

Lösen Sie die Aufgaben 8.5 und 8.6.

⚡Aufteilung in Gruppen/Breakout-Rooms ⏱️ 10 Minuten


Review

🎯 Wurden die Lernziele erreicht?

⚡ Feedback zu den Zielen einholen.

Edit this page
Last Updated:
Contributors: Janik von Rotz
Next
Übungen Thema 8