„Batteries included“

In Python kann eine Bibliothek aus mehreren Komponenten bestehen, einschließlich eingebauter Datentypen und Konstanten, die ohne eine Importanweisung verwendet werden können, wie z.B. Zahlen und Listen, sowie einiger eingebauter Funktionen und Exceptions. Der größte Teil der Bibliothek ist eine umfangreiche Sammlung von Modulen. Wenn ihr Python installiert habt, stehen euch auch verschiedene Bibliotheken zur Verfügung zum

Managen von Datentypen

Die Standardbibliothek enthält natürlich Unterstützung für die in Python eingebauten Typen. Darüber hinaus gibt es in der Standardbibliothek drei Kategorien, die sich mit verschiedenen Datentypen befassen: Module für Strings, Datentypen und Zahlen.

String-Module

:

Modul

Beschreibung

string

vergleicht mit Konstanten wie string.digits oder string.whitespace

re

sucht und ersetzt Text mit regulären Ausdrücken

struct

konvertiert zwischen Python-Werten und C-Strukturen, die als Python-Bytes-Objekte dargestellt werden.

difflib

hilft beim Berechnen von Deltas, beim Auffinden von Unterschieden zwischen Zeichenketten oder Sequenzen und beim Erstellen von Patches und Diff-Dateien

textwrap

umbricht und füllt Text, formatiert Text mit Zeilenumbrüchen oder Leerzeichen

Checks

  • Könnt ihr z.B. eine Zeichenkette mit einer ganzen Zahl addieren oder multiplizieren, oder mit einer Gleitkommazahl oder einer komplexen Zahl?

  • Wie könnt ihr eine Überschrift wie variables and expressions so abändern, dass sie keine Leerzeichen mehr enthält und besser als Dateinamen verwendet werden kann?

  • Welche der folgenden Zeichenketten können nicht in Zahlen umgewandelt werden und warum?

    • int("1e2")

    • int(1e+2)

    • int("1+2")

    • int("+2")

  • Wenn ihr überprüfen wollt, ob eine Zeile mit .. note:: beginnt, welche Methode würdet ihr verwenden? Gibt es auch noch andere Möglichkeiten?

  • Angenommen, ihr habt eine Zeichenkette mit Ausrufezeichen, Anführungszeichen und Zeilenumbrruch. Wie können diese aus der Zeichenkette entfernt werden?

  • Wie könnt ihr alle Leerräume und Satzzeichen aus einer Zeichenfolge in einen Bindestrich (-) ändern?

  • Welche Anwendungsfälle könnt ihr euch vorstellen, in denen das struct-Modul für das Lesen oder Schreiben von Binärdaten nützlich wäre?

    • beim Lesen und Schreiben einer Binärdatei

    • beim Lesen von einer externen Schnittstelle, wobei die Daten genau so gespeichert werden sollen, wie sie übermittelt wurden

  • Welchen regulären Ausdruck würdet ihr verwenden, um Zeichenfolgen zu finden, die die Zahlen zwischen -3 und +3 darstellen?

  • Welchen regulären Ausdruck würdet ihr verwenden, um Hexadezimalwerte zu finden?

Module für Datentypen

Modul

Beschreibung

datetime, calendar

Zeit- und Kalenderoperationen

collections

Container-Datentypen

enum

ermöglicht die Erstellung von Aufzählungsklassen, die symbolische Namen an konstante Werte binden

array

Effiziente Arrays von numerischen Werten

sched

Event-Scheduler

queue

Synchronisierte Queue-Klasse

copy

Flache und tiefe Kopieroperationen

pprint

druckt Python-Datenstrukturen „hübsch“ aus

typing

unterstützt die Kommentierung von Code mit Hinweisen auf die Typen von Objekten, insbesondere von Funktionsparametern und Rückgabewerten

Module für Zahlen

:

Modul

Beschreibung

numbers

für numerische abstrakte Basisklassen

math, cmath

für mathematische Funktionen für reelle und komplexe Zahlen

decimal

für dezimale Festkomma- und Gleitkomma-Arithmetik

statistics

für Funktionen zur Berechnung von mathematischen Statistiken

fractions

für rationale Zahlen

random

zum Erzeugen von Pseudozufallszahlen und -auswahlen sowie zum Mischen von Sequenzen

itertools

für Funktionen, die Iteratoren für effiziente Schleifen erzeugen

functools

für Funktionen höherer Ordnung und Operationen auf aufrufbaren Objekten

operator

für Standardoperatoren als Funktionen

Checks

  • Erstellt einige Zahlenvariablen (Ganzzahlen, Gleitkommazahlen und komplexe Zahlen). Experimentiert ein wenig damit, was passiert, wenn ihr Operationen mit ihnen durchführt, auch typübergreifend.

  • Ladet das Modul math und probiert einige der Funktionen aus. Ladet dann auch das Modul cmath und macht dasselbe.

  • Wie könnt ihr die Funktionen des math-Moduls wiederherstellen?

  • Entscheidet, ob die folgenden Aussagen wahr oder falsch sind:

    • 1

    • 0

    • -1

    • [0]

    • 1 and 0

    • 1 > 0 or []

Ändern von Dateien

:

Modul

Beschreibung

os.path

führt allgemeine Pfadnamenmanipulationen durch

pathlib

manipuliert Pfadnamen

fileinput

iteriert über mehrere Eingabedateien

filecmp

vergleicht Dateien und Verzeichnisse

tempfile

erzeugt temporäre Dateien und Verzeichnisse

glob, fnmatch

verwenden UNIX-ähnlicher Pfad- und Dateinamensmuster

linecache

greift zufällig auf Textzeilen zu

shutil

führt Dateioperationen auf höherer Ebene aus

mimetypes

Zuordnung von Dateinamen zu MIME-Typen

pickle, shelve

aktivieren von Python-Objektserialisierung und -persistenz, s.a. Das pickle-Modul

csv

liest und schreibt CSV-Dateien

json

JSON-Kodierer und -Dekodierer

sqlite3

bietet eine DB-API 2.0-Schnittstelle für SQLite-Datenbanken, s.a. Das sqlite-Modul

xml, xml.parsers.expat, xml.dom, xml.sax, xml.etree.ElementTree

liest und schreibt XML-Dateien, s.a. Das xml-Modul

html.parser, html.entities

Parsen von HTML und XHTML

configparser

liest und schreibt Windows-ähnliche Konfigurationsdateien (.ini)

base64, binhex, binascii, quopri, uu

Kodierung/Dekodierung von Dateien oder Streams

struct

konvertiert zwischen Python-Werten und C-Strukturen, die als als Python-Bytes-Objekte dargestellt werden.

zlib, gzip, bz2, zipfile, tarfile

für das Arbeiten mit Archivdateien und Komprimierungen

Siehe auch

Checks

  • Verwendet die Funktionen des os-Moduls, um einen Pfad zu einer Datei namens example.log zu nehmen und einen neuen Dateipfad im selben Verzeichnis für eine Datei namens example.log1 zu erstellen.

  • Welche Bedeutung hat das Hinzufügen von b als Parameter von open()?

  • Öffnet eine Datei my_file.txt und fügt zusätzlichen Text am Ende der Datei ein. Welchen Befehl würdet ihr verwenden, um my_file.txt zu öffnen? Welchen Befehl würdet ihr verwenden, um die Datei erneut zu öffnen und von Anfang an zu lesen?

  • Welche Anwendungsfälle könnt ihr euch vorstellen, in denen das struct-Modul für das Lesen oder Schreiben von Binärdaten nützlich wäre?

  • Warum könnte pickle für die folgenden Anwendungsfälle geeignet sein oder auch nicht:

    1. Speichern einiger Zustandsvariablen von einem Durchlauf zum nächsten

    2. Aufbewahren von Auswertungsergebnissen

    3. Speichern von Benutzernamen und Passwörtern

    4. Speichern eines großen Wörterbuchs mit englischen Begriffen

  • Wenn ihr euch die Manpage für das wc-Dienstprogramm anseht, seht ihr zwei Befehlszeilenoptionen:

    -c

    zählt die Bytes in der Datei

    -m

    zählt die Zeichen, die im Falle einiger Unicode-Zeichen zwei oder mehr Bytes lang sein können

    Außerdem sollte unser Modul, wenn eine Datei angegeben wird, aus dieser Datei lesen und sie verarbeiten, aber wenn keine Datei angegeben wird, sollte es aus stdin lesen und verarbeiten.

  • Schreibt eure Version des wc-Dienstprogramms so um, dass es sowohl die Unterscheidung zwischen Bytes und Zeichen als auch die Möglichkeit, aus Dateien und von der Standardeingabe zu lesen, implementiert.

  • Wenn ein Kontext-Manager in einem Skript verwendet wird, das mehrere Dateien liest und/oder schreibt, welche der folgenden Ansätze wäre eurer Meinung nach am besten?

    1. Legt das gesamte Skript in einen Block, der von einer with-Anweisung verwaltet wird.

    2. Verwendet eine with-Anweisung für alle Lesevorgänge und eine weitere für alle Schreibvorgänge.

    3. Verwendet jedes Mal eine with-Anweisung, wenn ihr eine Datei lest oder schreibt, d.h. für jede Zeile.

    4. Verwendet für jede Datei, die ihr lest oder schreibt, eine with-Anweisung.

  • Archiviert *.txt-Dateien aus dem aktuellen Verzeichnis im Verzeichnis archive als *.zip-Dateien mit dem aktuellen Datum als Dateiname.

    • Welche Module benötigt ihr hierfür?

    • Schreibt eine mögliche Lösung.

Interagieren mit dem Betriebssystem

Modul

Beschreibung

os

Verschiedene Betriebssystemschnittstellen

platform

Zugang zu den Identifizierungsdaten der zugrunde liegenden Plattform

time

Zeitzugriff und Konvertierungen

io

Werkzeuge für die Arbeit mit Datenströmen

select

Warten auf I/O-Abschluss

optparse

Parser für Befehlszeilenoptionen

curses

Terminal-Handling für Zeichenzellen-Displays

getpass

Portable Passworteingabe

ctypes

bietet C-kompatible Datentypen

threading

High-Level Threading-Interface

multiprocessing

Prozessbasierte Threading-Schnittstelle

subprocess

Verwaltung von Unterprozessen

Verwenden von Internet-Protokollen

Modul

Beschreibung

socket, ssl

Low-Level-Netzwerkschnittstelle und SSL-Wrapper für Socket-Objekte

email

E-Mail- und MIME-Verarbeitungspaket

mailbox

Manipulation von Postfächern in verschiedenen Formaten

cgi, cgitb

Common Gateway Interface-Unterstützung

wsgiref

WSGI-Dienstprogramme und Referenzimplementierung

urllib.request, urllib.parse

Öffnen und Parsen von URLs

ftplib, poplib, imaplib, nntplib, smtplib, telnetlib

Clients für verschiedene Internetprotokolle

socketserver

Framework für Netzwerkserver

http.server

HTTP-Server

xmlrpc.client, xmlrpc.server

XML-RPC-Client und -Server

Entwickeln und Debuggen

Modul

Beschreibung

pydoc

Dokumentationsgenerator und Online-Hilfesystem

doctest

Beispiele aus Python-Docstrings testen

unittest

Framework für Unittests, s.a. Unittest

test.support

Utility-Funktionen für Tests

trace

verfolgt die Ausführung von Python-Anweisungen

pdb

Python-Debugger

logging

Protokollierungsfunktion für Python

timeit

misst die Ausführungszeit von kleinen Codeschnipseln

profile, cProfile

Python-Profiler

sys

Systemspezifische Parameter und Funktionen

gc

Funktionen des Python-Garbage-Collectors

inspect

inspiziert Objekte live

atexit

Exit-Handler

__future__

Zukünftige Statement-Definitionen

imp

erlaubt den Zugriff auf die Import-Interna

zipimport

importiert von Modulen aus Zip-Archiven

modulefinder

findet Module, die von einem Skript verwendet werden