Die Python-Standardbibliothek ist eine umfangreiche Sammlung von Modulen und Paketen, die direkt mit Python ausgeliefert werden. Diese Bibliothek enthält eine Vielzahl von nützlichen Funktionen und Klassen, die es Entwicklern ermöglichen, eine breite Palette von Aufgaben ohne zusätzliche Abhängigkeiten zu erledigen.
Die Python-Standardbibliothek wird auch als “Batterien inklusive” bezeichnet, da sie viele gängige Anwendungsfälle abdeckt und die Notwendigkeit, externe Bibliotheken zu installieren, reduziert. Die Standardbibliothek ist in Python integriert, sodass Sie die enthaltenen Module und Pakete direkt importieren und verwenden können, ohne sie gesondert installieren zu müssen.
Einige der Vorteile der Python-Standardbibliothek sind:
import os
import shutil
from pathlib import Path
# File and directory operations using os module
os.mkdir("mydir")
os.chdir("mydir")
with open("myfile.txt", "w") as f:
f.write("Hello, World!")
os.rename("myfile.txt", "newfile.txt")
os.remove("newfile.txt")
os.chdir("..")
os.rmdir("mydir")
# File and directory operations using shutil module
shutil.copy("file.txt", "file_copy.txt")
shutil.move("file_copy.txt", "newdir/")
shutil.rmtree("newdir")
# Object-oriented path operations using pathlib module
p = Path(".")
for file in p.glob("*.txt"):
print(file.name)In diesem Beispiel haben wir das os-Modul, das
shutil-Modul und das pathlib-Modul gezeigt,
die nützlich sind, um Datei- und Verzeichnisoperationen
durchzuführen.
Wir haben mit dem os-Modul Verzeichnisse erstellt,
Dateien erstellt, umbenannt und gelöscht, sowie das Arbeitsverzeichnis
geändert und Verzeichnisse entfernt.
Mit dem shutil-Modul können wir Dateien und
Verzeichnisse kopieren, verschieben und löschen. In diesem Beispiel
haben wir eine Datei kopiert, sie in ein anderes Verzeichnis verschoben
und schließlich das Verzeichnis vollständig entfernt.
Das pathlib-Modul ist eine objektorientierte Alternative
zu den Funktionen des os-Moduls. Wir haben eine
Path-Instanz erstellt, die das aktuelle Verzeichnis
darstellt, und haben dann die glob()-Methode verwendet, um
alle .txt-Dateien im Verzeichnis zu finden und ihre Namen
auszugeben. Das pathlib-Modul ist nützlich, um
sicherzustellen, dass Pfade und Dateinamen in plattformunabhängiger
Weise angegeben werden, und um komplexe Pfade und Dateinamen zu
manipulieren.
import datetime
import time
import calendar
# Datetime module
now = datetime.datetime.now()
print(now)
print(now.strftime("%Y-%m-%d %H:%M:%S"))
delta = datetime.timedelta(days=1)
tomorrow = now + delta
print(tomorrow)
# Time module
start = time.time()
time.sleep(2)
end = time.time()
print(f"Elapsed time: {end - start:.2f} seconds")
# Calendar module
c = calendar.monthcalendar(2022, 3)
print(calendar.month_name[3])
print("Mo Tu We Th Fr Sa Su")
for week in c:
row = ""
for day in week:
if day == 0:
row += " "
else:
row += f" {day:02d}"
print(row)In diesem Beispiel haben wir das datetime-Modul, das
time-Modul und das calendar-Modul gezeigt, die
nützlich sind, um mit Datum, Zeit und Kalenderoperationen umzugehen.
Mit dem datetime-Modul können wir aktuelle Datum und
Uhrzeit abrufen, Datums- und Zeitdauern berechnen und Datums- und
Zeitangaben formatieren. Wir haben auch gezeigt, wie wir Datums- und
Zeitangaben manipulieren können, indem wir eine
timedelta-Instanz erstellt haben und sie zu einem
datetime-Objekt hinzugefügt haben.
Mit dem time-Modul können wir Zeitmessungen durchführen
und Zeitangaben formatieren. In diesem Beispiel haben wir die
time()-Funktion verwendet, um den Startzeitpunkt eines
Programms zu messen, die sleep()-Funktion verwendet, um
eine Pause von 2 Sekunden einzulegen, und die
time()-Funktion erneut verwendet, um die Endzeit zu messen
und die verstrichene Zeit zu berechnen.
Mit dem calendar-Modul können wir verschiedene
Kalenderoperationen und -funktionen durchführen. In diesem Beispiel
haben wir den Kalender für den März 2022 generiert und ausgegeben.
import math
import random
import statistics
import fractions
import decimal
# Math module
print(math.sqrt(25))
print(math.pi)
print(math.sin(math.pi / 2))
# Random module
print(random.randint(1, 10))
print(random.choice(['apple', 'banana', 'cherry']))
random.shuffle([1, 2, 3, 4, 5])
print(random.random())
# Statistics module
data = [1, 2, 3, 4, 5]
print(statistics.mean(data))
print(statistics.median(data))
print(statistics.stdev(data))
# Fractions module
x = fractions.Fraction(1, 3)
y = fractions.Fraction(2, 3)
print(x + y)
print(x * y)
# Decimal module
a = decimal.Decimal('0.1')
b = decimal.Decimal('0.2')
print(a + b)In diesem Beispiel haben wir das math-Modul, das
random-Modul, das statistics-Modul, das
fractions-Modul und das decimal-Modul
gezeigt.
Mit dem math-Modul können wir grundlegende mathematische
Funktionen wie Quadratwurzeln, Trigonometrische Funktionen und
Konstanten wie Pi und e berechnen.
Mit dem random-Modul können wir Zufallszahlen generieren
und zufällige Elemente aus einer Sequenz auswählen oder eine Sequenz
zufällig durcheinander bringen.
Mit dem statistics-Modul können wir statistische
Funktionen und Berechnungen durchführen, wie zum Beispiel das Berechnen
des Durchschnitts, des Medians und der Standardabweichung einer Liste
von Zahlen.
Mit dem fractions-Modul können wir Bruchrechnungen
durchführen, wie zum Beispiel das Addieren und Multiplizieren von
Brüchen.
Mit dem decimal-Modul können wir dezimale Arithmetik mit
fester Genauigkeit durchführen, was nützlich ist, wenn wir mit
Geldbeträgen oder anderen Werten arbeiten, bei denen die Genauigkeit
wichtig ist.
import zipfile
import tarfile
import gzip
import bz2
# Zipfile module
with zipfile.ZipFile("archive.zip", "w") as myzip:
myzip.write("file.txt")
with zipfile.ZipFile("archive.zip", "r") as myzip:
myzip.extractall()
# Tarfile module
with tarfile.open("archive.tar", "w") as mytar:
mytar.add("file.txt")
with tarfile.open("archive.tar", "r") as mytar:
mytar.extractall()
# Gzip module
with open("file.txt", "rb") as f_in:
with gzip.open("file.txt.gz", "wb") as f_out:
f_out.write(f_in.read())
with gzip.open("file.txt.gz", "rb") as f_in:
with open("file.txt", "wb") as f_out:
f_out.write(f_in.read())
# Bz2 module
with open("file.txt", "rb") as f_in:
with bz2.open("file.txt.bz2", "wb") as f_out:
f_out.write(f_in.read())
with bz2.open("file.txt.bz2", "rb") as f_in:
with open("file.txt", "wb") as f_out:
f_out.write(f_in.read())In diesem Beispiel haben wir das zipfile-Modul, das
tarfile-Modul, das gzip-Modul und das
bz2-Modul gezeigt, die nützlich sind, um Datenkomprimierung
und -archivierung durchzuführen.
Mit dem zipfile-Modul können wir ZIP-Archive erstellen
und extrahieren. Wir haben gezeigt, wie man eine Datei
file.txt in ein ZIP-Archiv packt und dann das Archiv
extrahiert.
Mit dem tarfile-Modul können wir TAR-Archive erstellen
und extrahieren. Wir haben gezeigt, wie man eine Datei
file.txt in ein TAR-Archiv packt und dann das Archiv
extrahiert.
Mit dem gzip-Modul können wir GZIP-Komprimierung und
-Dekomprimierung durchführen. Wir haben gezeigt, wie man eine Datei
file.txt in eine GZIP-komprimierte Datei
file.txt.gz umwandelt und dann die GZIP-komprimierte Datei
in die ursprüngliche Datei zurückwandelt.
Mit dem bz2-Modul können wir BZIP2-Komprimierung und
-Dekomprimierung durchführen. Wir haben gezeigt, wie man eine Datei
file.txt in eine BZIP2-komprimierte Datei
file.txt.bz2 umwandelt und dann die BZIP2-komprimierte
Datei in die ursprüngliche Datei zurückwandelt.
import socket
import smtplib
from email.mime.text import MIMEText
from urllib import request
# Socket module
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.com", 80))
s.sendall(b"GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n")
response = s.recv(4096)
print(response.decode())
# Smtplib module
message = MIMEText("Hello, this is a test email.")
message["Subject"] = "Test Email"
message["From"] = "me@example.com"
message["To"] = "you@example.com"
with smtplib.SMTP("smtp.example.com") as server:
server.login("me@example.com", "password")
server.sendmail("me@example.com", "you@example.com", message.as_string())
# Email module
import email.message
msg = email.message.Message()
msg.set_payload("This is a test email.")
msg["From"] = "me@example.com"
msg["To"] = "you@example.com"
msg["Subject"] = "Test Email"
print(msg.as_string())
# Urllib module
response = request.urlopen("https://www.google.com")
print(response.status)
print(response.getheader("Content-Type"))
print(response.read().decode())In diesem Beispiel haben wir das socket-Modul, das
smtplib-Modul, das email-Modul und das
urllib-Modul gezeigt, die nützlich sind, um mit Netzwerk-
und Internetprotokollen zu arbeiten.
Mit dem socket-Modul können wir Netzwerkkommunikation
durchführen. Wir haben gezeigt, wie man eine Verbindung zu einem
HTTP-Server herstellt und eine HTTP-Anfrage sendet.
Mit dem smtplib-Modul können wir E-Mails über SMTP
(Simple Mail Transfer Protocol) senden. Wir haben gezeigt, wie man eine
E-Mail-Nachricht erstellt und über einen SMTP-Server sendet.
Mit dem email-Modul können wir E-Mail-Nachrichten
erstellen und parsen. Wir haben gezeigt, wie man eine einfache
E-Mail-Nachricht erstellt und sie als Text darstellt.
Mit dem urllib-Modul können wir URLs verarbeiten und
HTTP-Anfragen senden. Wir haben gezeigt, wie man eine HTTP-Anfrage an
Google sendet und die Antwort ausgibt.
import json
import csv
import xml.etree.ElementTree as ET
# Json module
data = {"name": "John", "age": 30, "city": "New York"}
json_string = json.dumps(data)
print(json_string)
data = json.loads(json_string)
print(data)
# Csv module
with open("data.csv", "w", newline="") as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["Name", "Age", "City"])
writer.writerow(["John", "30", "New York"])
writer.writerow(["Alice", "25", "Los Angeles"])
with open("data.csv", newline="") as csvfile:
reader = csv.reader(csvfile)
for row in reader:
print(", ".join(row))
# ElementTree module
xml_string = '<root><person><name>John</name><age>30</age></person></root>'
root = ET.fromstring(xml_string)
print(root.tag)
for person in root.findall("person"):
name = person.find("name").text
age = person.find("age").text
print(name, age)In diesem Beispiel haben wir das json-Modul, das
csv-Modul und das xml.etree.ElementTree-Modul
gezeigt, die nützlich sind, um mit Datenformaten und Datenaustausch zu
arbeiten.
Mit dem json-Modul können wir JSON (JavaScript Object
Notation)-Daten serialisieren und deserialisieren. Wir haben gezeigt,
wie man ein Python-Datenobjekt in eine JSON-Zeichenkette serialisiert
und wie man eine JSON-Zeichenkette in ein Python-Datenobjekt
deserialisiert.
Mit dem csv-Modul können wir CSV-Dateien lesen und
schreiben. Wir haben gezeigt, wie man eine CSV-Datei schreibt und wie
man eine CSV-Datei liest und ihre Inhalte ausgibt.
Mit dem xml.etree.ElementTree-Modul können wir XML-Daten
verarbeiten. Wir haben gezeigt, wie man eine XML-Zeichenkette in einen
ElementTree umwandelt und wie man Elemente in dem ElementTree findet und
ihre Inhalte ausgibt.
import threading
import multiprocessing
# Threading module
def print_numbers():
for i in range(10):
print(i)
def print_letters():
for letter in "abcdefghij":
print(letter)
t1 = threading.Thread(target=print_numbers)
t2 = threading.Thread(target=print_letters)
t1.start()
t2.start()
t1.join()
t2.join()
# Multiprocessing module
def square(x):
return x * x
if __name__ == '__main__':
with multiprocessing.Pool(processes=4) as pool:
result = pool.map(square, range(10))
print(result)Dieses Beispiel zeigt, wie man das threading-Modul und
das multiprocessing-Modul verwendet, um Multithreading und
Multiprozessing in Python zu implementieren.
Mit dem threading-Modul können wir mehrere Threads in
einem Programm ausführen. Wir haben gezeigt, wie man Threads erstellt
und startet, und wie man auf das Ende eines Threads wartet.
Mit dem multiprocessing-Modul können wir Aufgaben in
Parallelverarbeitung ausführen. Wir haben gezeigt, wie man eine Funktion
auf eine Sequenz von Eingaben anwendet und das Ergebnis in einer Liste
von Ausgaben zurückgibt. Beachten Sie, dass die Verwendung von
multiprocessing innerhalb einer
if __name__ == '__main__':-Bedingung steht, um Probleme
beim Starten von Unterprozessen zu vermeiden.