Kompletter Leitfaden zum Datei-Upload mit der Requests-Bibliothek in Python

Die Requests-Bibliothek ist das am häufigsten verwendete Werkzeug, um Dateien in Python hochzuladen. In diesem Leitfaden werden wir die grundlegenden Methoden für den Datei-Upload mit der Requests-Bibliothek erklären und dabei auch fortgeschrittene Beispiele und Fehlerbehandlungsstrategien behandeln. Schritt für Schritt gehen wir durch, sodass auch Anfänger problemlos folgen können. Nutzen Sie diesen Leitfaden, um Ihre Fähigkeiten im Datei-Upload mit Python zu verbessern.

Inhaltsverzeichnis

Installation der Requests-Bibliothek

Um die Requests-Bibliothek in Python zu verwenden, muss sie zunächst installiert werden. Im Folgenden finden Sie die Installationsschritte.

Installationsschritte

Die Installation der Requests-Bibliothek kann einfach mit pip durchgeführt werden. Führen Sie dazu den folgenden Befehl aus.

pip install requests

Überprüfung der Installation

Nach der Installation können Sie im Interpreter den folgenden Code ausführen, um zu überprüfen, ob die Requests-Bibliothek korrekt installiert wurde.

import requests

print(requests.__version__)

Wenn bei der Ausführung dieses Codes die Versionsnummer von Requests angezeigt wird, war die Installation erfolgreich.

Grundlegende Methode zum Datei-Upload

In diesem Abschnitt wird die grundlegende Methode zum Hochladen von Dateien mit der Requests-Bibliothek erklärt. Wir zeigen ein einfaches Beispiel und erläutern dessen Funktionsweise.

Grundlegendes Code-Beispiel

Im Folgenden finden Sie ein einfaches Beispiel zum Hochladen einer Datei mit der Requests-Bibliothek.

import requests

# URL für den Upload
url = 'https://example.com/upload'

# Die hochzuladende Datei
files = {'file': open('testfile.txt', 'rb')}

# POST-Anfrage senden
response = requests.post(url, files=files)

# Überprüfung des Statuscodes der Antwort
print(response.status_code)

Erklärung des Codes

  • import requests: Importiert die Requests-Bibliothek.
  • url: Gibt die URL an, an die die Datei hochgeladen werden soll.
  • files: Gibt die hochzuladende Datei an. Die Datei wird in einem Wörterbuch angegeben, wobei der Schlüssel ‚file‘ und der Wert das Dateiobjekt ist.
  • requests.post(): Sendet eine POST-Anfrage. Die Datei wird über den Parameter files übermittelt.
  • response.status_code: Gibt den Statuscode der Antwort aus. Wenn der Statuscode 200 ist, war der Upload erfolgreich.

Mit dieser grundlegenden Methode können Sie den Datei-Upload in Python einfach durchführen. Als nächstes sehen wir uns den Datei-Upload unter Verwendung von Multipart-Formulardaten an.

Upload von Multipart-Formulardaten

In diesem Abschnitt wird erklärt, wie man mit der Requests-Bibliothek Multipart-Formulardaten hochladen kann. Diese Methode ist nützlich, wenn Sie zusammen mit der Datei auch andere Daten senden möchten.

Grundlegendes Beispiel für Multipart-Formulardaten

Das folgende Beispiel zeigt, wie Sie eine Datei zusammen mit anderen Formulardaten hochladen können.

import requests

# URL für den Upload
url = 'https://example.com/upload'

# Datei und andere Daten, die hochgeladen werden sollen
files = {'file': open('testfile.txt', 'rb')}
data = {'name': 'testfile', 'description': 'This is a test file'}

# POST-Anfrage senden
response = requests.post(url, files=files, data=data)

# Überprüfung des Statuscodes der Antwort
print(response.status_code)

Erklärung des Codes

  • files: Die hochzuladende Datei wird in einem Wörterbuch angegeben. Der Schlüssel ist ‚file‘, der Wert ist das Dateiobjekt.
  • data: Zusätzliche Formulardaten werden in einem Wörterbuch angegeben. In diesem Beispiel werden zwei Felder (’name‘ und ‚description‘) gesendet.
  • requests.post(): Sendet eine POST-Anfrage mit Datei und Formulardaten. Die Datei wird über den Parameter files und die Daten über data übermittelt.

Vorteile des Multipart-Uploads

Die Verwendung von Multipart-Formulardaten bietet folgende Vorteile:

  • Es können gleichzeitig Dateien und Textdaten gesendet werden
  • Durch das Senden von Dateien als Teil der Formulardaten können komplexere Datenstrukturen verarbeitet werden

Mit dieser Methode können Sie nicht nur Dateien hochladen, sondern auch begleitende Daten gleichzeitig senden, was eine flexiblere Datenübertragung ermöglicht. Als nächstes werden wir die möglichen Fehler während des Uploads und deren Behandlung erläutern.

Fehlerbehandlung

In diesem Abschnitt werden mögliche Fehler beim Hochladen von Dateien und deren Behandlungsstrategien erläutert. Durch eine angemessene Fehlerbehandlung können die Zuverlässigkeit des Programms und die Benutzererfahrung verbessert werden.

Grundlegende Methoden zur Fehlerbehandlung

Im Folgenden finden Sie ein Beispiel für grundlegende Fehlerbehandlung beim Datei-Upload mit der Requests-Bibliothek.

import requests

# URL für den Upload
url = 'https://example.com/upload'

# Die hochzuladende Datei
files = {'file': open('testfile.txt', 'rb')}

try:
    # POST-Anfrage senden
    response = requests.post(url, files=files)
    response.raise_for_status()  # Löst eine HTTPError aus, wenn der Statuscode nicht 200 ist
except requests.exceptions.RequestException as e:
    print(f'Beim Hochladen ist ein Fehler aufgetreten: {e}')
else:
    print('Die Datei wurde erfolgreich hochgeladen')

Erklärung des Codes

  • try-Block: Führt die Datei-Upload-Anfrage aus.
  • response.raise_for_status(): Löst eine requests.exceptions.HTTPError aus, wenn der Statuscode nicht im Bereich 200 liegt.
  • except requests.exceptions.RequestException as e: Fängt alle Requests-bezogenen Ausnahmen ab und zeigt eine Fehlermeldung an.
  • else-Block: Wird ausgeführt, wenn kein Fehler aufgetreten ist.

Spezifische Fehlerbeispiele und Lösungsansätze

  • HTTP-Fehler: Tritt auf, wenn der Server die Anfrage nicht akzeptiert. Kann mit response.raise_for_status() erkannt werden.
  • Verbindungsfehler: Tritt auf, wenn keine Verbindung zum Server hergestellt werden kann, z.B. bei einem Netzwerkausfall. Kann mit requests.exceptions.ConnectionError abgefangen werden.
  • Timeout-Fehler: Tritt auf, wenn die Anfrage einen Timeout überschreitet. Kann mit requests.exceptions.Timeout abgefangen werden.
import requests

# URL für den Upload
url = 'https://example.com/upload'

# Die hochzuladende Datei
files = {'file': open('testfile.txt', 'rb')}

try:
    # POST-Anfrage senden (mit Timeout)
    response = requests.post(url, files=files, timeout=10)
    response.raise_for_status()
except requests.exceptions.Timeout:
    print('Die Anfrage hat einen Timeout überschritten')
except requests.exceptions.ConnectionError:
    print('Ein Verbindungsfehler ist aufgetreten')
except requests.exceptions.HTTPError as http_err:
    print(f'Ein HTTP-Fehler ist aufgetreten: {http_err}')
except requests.exceptions.RequestException as e:
    print(f'Ein anderer Fehler ist aufgetreten: {e}')
else:
    print('Die Datei wurde erfolgreich hochgeladen')

Durch angemessene Fehlerbehandlung wird die Stabilität und Zuverlässigkeit des Programms verbessert. Als nächstes erklären wir den Upload mehrerer Dateien.

Erweiterte Beispiele: Hochladen mehrerer Dateien

In diesem Abschnitt zeigen wir, wie Sie mit der Requests-Bibliothek mehrere Dateien gleichzeitig hochladen können. Wir geben praktische Code-Beispiele, um den Upload mehrerer Dateien effizient zu gestalten.

Code-Beispiel zum Hochladen mehrerer Dateien

Das folgende Beispiel zeigt, wie Sie mehrere Dateien hochladen können.

import requests

# URL für den Upload
url = 'https://example.com/upload'

# Mehrere Dateien, die hochgeladen werden sollen
files = {
    'file1': open('testfile1.txt', 'rb'),
    'file2': open('testfile2.txt', 'rb')
}

# POST-Anfrage senden
response = requests.post(url, files=files)

# Überprüfung des Statuscodes der Antwort
print(response.status_code)

Erklärung des Codes

  • files: Mehrere Dateien werden in einem Wörterbuch angegeben. Die Schlüssel sind die Dateinamen, die Werte sind die Dateiobjekte.
  • requests.post(): Sendet eine POST-Anfrage mit mehreren Dateien, die über den Parameter files übergeben werden.

Kombination mit zusätzlichen Formulardaten

Beim Hochladen mehrerer Dateien können auch zusätzliche Formulardaten gesendet werden. Im Folgenden finden Sie ein Beispiel dazu.

import requests

# URL für den Upload
url = 'https://example.com/upload'

# Mehrere Dateien, die hochgeladen werden sollen
files = {
    'file1': open('testfile1.txt', 'rb'),
    'file2': open('testfile2.txt', 'rb')
}

# Zusätzliche Formulardaten
data = {
    'username': 'testuser',
    'description': 'Uploading multiple files'
}

# POST-Anfrage senden
response = requests.post(url, files=files, data=data)

# Überprüfung des Statuscodes der Antwort
print(response.status_code)

Erklärung des Codes

  • files: Die hochzuladenden Dateien werden in einem Wörterbuch angegeben.
  • data: Zusätzliche Formulardaten werden in einem Wörterbuch angegeben. In diesem Beispiel werden der Benutzername und die Beschreibung gesendet.
  • requests.post(): Sendet eine POST-Anfrage mit Dateien und zusätzlichen Daten.

Mit dieser Methode können Sie mehrere Dateien effizient hochladen und bei Bedarf gleichzeitig zusätzliche Daten senden. Als nächstes erklären wir, wie Sie Dateien auf einer Website hochladen, die eine Authentifizierung erfordert.

Datei-Upload bei erforderlicher Authentifizierung

In diesem Abschnitt wird erklärt, wie man Dateien auf einer Website hochlädt, die eine Authentifizierung erfordert. Mit der Requests-Bibliothek können Sie ganz einfach Anfragen mit Authentifizierungsinformationen senden.

Beispiel für grundlegende Authentifizierung

Im folgenden Beispiel wird gezeigt, wie Sie eine Datei auf einer Website hochladen können, die eine HTTP-Basisauthentifizierung verwendet.

import requests

# URL für den Upload
url = 'https://example.com/upload'

# Authentifizierungsinformationen
auth = ('username', 'password')

# Die hochzuladende Datei
files = {'file': open('testfile.txt', 'rb')}

# POST-Anfrage senden
response = requests.post(url, files=files, auth=auth)

# Überprüfung des Statuscodes der Antwort
print(response.status_code)

Erklärung des Codes

  • auth: Authentifizierungsinformationen werden als Tupel angegeben, bestehend aus Benutzername und Passwort.
  • requests.post(): Sendet eine Anfrage mit den Authentifizierungsinformationen über den Parameter auth.

Beispiel für Token-Authentifizierung

Im folgenden Beispiel wird gezeigt, wie Sie eine Datei mit einem Bearer-Token hochladen können.

import requests

# URL für den Upload
url = 'https://example.com/upload'

# Token-Authentifizierungs-Header
headers = {'Authorization': 'Bearer your_token_here'}

# Die hochzuladende Datei
files = {'file': open('testfile.txt', 'rb')}

# POST-Anfrage senden
response = requests.post(url, files=files, headers=headers)

# Überprüfung des Statuscodes der Antwort
print(response.status_code)

Erklärung des Codes

  • headers: Der Authentifizierungs-Header wird als Wörterbuch angegeben. In diesem Fall wird ein Bearer-Token verwendet.
  • requests.post(): Sendet eine Anfrage mit dem Authentifizierungs-Header über den Parameter headers.

Beispiel für OAuth-Authentifizierung

Im folgenden Beispiel wird gezeigt, wie Sie eine Datei mit OAuth 2.0 hochladen, indem Sie ein Zugriffstoken abrufen und damit die Datei hochladen.

import requests
from requests_oauthlib import OAuth2Session

# OAuth2-Konfiguration
client_id = 'your_client_id'
client_secret = 'your_client_secret'
authorization_base_url = 'https://example.com/oauth/authorize'
token_url = 'https://example.com/oauth/token'

# OAuth2-Sitzung erstellen
oauth = OAuth2Session(client_id)
authorization_url, state = oauth.authorization_url(authorization_base_url)

# Benutzer auffordern, die Autorisierungs-URL zu besuchen und die Redirect-URL einzugeben
print('Bitte gehen Sie zu {} und autorisieren Sie den Zugriff.'.format(authorization_url))
redirect_response = input('Fügen Sie die vollständige Redirect-URL hier ein: ')

# Token abrufen
oauth.fetch_token(token_url, authorization_response=redirect_response, client_secret=client_secret)

# URL für den Upload
url = 'https://example.com/upload'

# Die hochzuladende Datei
files = {'file': open('testfile.txt', 'rb')}

# POST-Anfrage senden
response = oauth.post(url, files=files)

# Überprüfung des Statuscodes der Antwort
print(response.status_code)

Erklärung des Codes

  • OAuth2Session: Erstellt eine OAuth2-Sitzung.
  • authorization_url: Generiert die URL zur Autorisierung durch den Benutzer.
  • fetch_token(): Ruft das Zugriffstoken ab, nachdem der Benutzer die Autorisierung abgeschlossen hat.
  • oauth.post(): Führt den Datei-Upload mithilfe der OAuth-Sitzung durch.

So laden Sie Dateien auf einer Website hoch, die eine Authentifizierung erfordert. Als nächstes bieten wir praktische Übungsaufgaben an, um das Gelernte zu vertiefen.

Übungsaufgaben

In diesem Abschnitt finden Sie praktische Übungsaufgaben, um Ihre Fähigkeiten im Datei-Upload mit der Requests-Bibliothek zu verbessern. Arbeiten Sie die Aufgaben durch, um ein tieferes Verständnis zu erlangen.

Übung 1: Grundlegender Datei-Upload

Führen Sie die folgenden Schritte aus, um einen grundlegenden Datei-Upload zu implementieren.

  1. Installieren Sie die requests-Bibliothek.
  2. Wählen Sie eine beliebige Datei aus und senden Sie eine POST-Anfrage an die Upload-URL.
  3. Geben Sie den Statuscode aus, um den erfolgreichen Upload zu bestätigen.

Beispiel

import requests

url = 'https://example.com/upload'
files = {'file': open('example.txt', 'rb')}
response = requests.post(url, files=files)
print(response.status_code)

Übung 2: Upload von Multipart-Formulardaten

Führen Sie die folgenden Schritte aus, um Multipart-Formulardaten zusammen mit einer Datei hochzuladen.

  1. Senden Sie zusammen mit der hochzuladenden Datei auch den Benutzernamen und eine Beschreibung als Formulardaten.
  2. Senden Sie eine POST-Anfrage an die Upload-URL.
  3. Geben Sie den Statuscode aus, um den erfolgreichen Upload zu bestätigen.

Beispiel

import requests

url = 'https://example.com/upload'
files = {'file': open('example.txt', 'rb')}
data = {'username': 'testuser', 'description': 'Test file upload'}
response = requests.post(url, files=files, data=data)
print(response.status_code)

Übung 3: Fehlerbehandlung beim Datei-Upload

Fügen Sie die Fehlerbehandlung zum grundlegenden Datei-Upload hinzu.

  1. Erweitern Sie den Code für den Datei-Upload um einen try-except-Block.
  2. Behandeln Sie Verbindungsfehler, Timeout-Fehler und HTTP-Fehler angemessen.

Beispiel

import requests

url = 'https://example.com/upload'
files = {'file': open('example.txt', 'rb')}

try:
    response = requests.post(url, files=files, timeout=10)
    response.raise_for_status()
except requests.exceptions.Timeout:
    print('Die Anfrage hat einen Timeout überschritten')
except requests.exceptions.ConnectionError:
    print('Ein Verbindungsfehler ist aufgetreten')
except requests.exceptions.HTTPError as http_err:
    print(f'Ein HTTP-Fehler ist aufgetreten: {http_err}')
except requests.exceptions.RequestException as e:
    print(f'Ein anderer Fehler ist aufgetreten: {e}')
else:
    print('Die Datei wurde erfolgreich hochgeladen')

Übung 4: Hochladen mehrerer Dateien

Führen Sie die folgenden Schritte aus, um mehrere Dateien gleichzeitig hochzuladen.

  1. Wählen Sie mindestens zwei Dateien aus und senden Sie eine POST-Anfrage an die Upload-URL.
  2. Geben Sie den Statuscode aus, um den erfolgreichen Upload zu bestätigen.

Beispiel

import requests

url = 'https://example.com/upload'
files = {
    'file1': open('example1.txt', 'rb'),
    'file2': open('example2.txt', 'rb')
}
response = requests.post(url, files=files)
print(response.status_code)

Übung 5: Datei-Upload mit Authentifizierung

Implementieren Sie einen Datei-Upload, der eine Authentifizierung erfordert.

  1. Verwenden Sie HTTP-Basisauthentifizierung oder Token-Authentifizierung, um die Datei hochzuladen.
  2. Senden Sie eine POST-Anfrage an die Upload-URL.
  3. Geben Sie den Statuscode aus, um den erfolgreichen Upload zu bestätigen.

Beispiel (HTTP-Basisauthentifizierung)

import requests

url = 'https://example.com/upload'
auth = ('username', 'password')
files = {'file': open('example.txt', 'rb')}
response = requests.post(url, files=files, auth=auth)
print(response.status_code)

Durch die Bearbeitung der Übungsaufgaben können Sie die verschiedenen Szenarien des Datei-Uploads mit der Requests-Bibliothek praktisch erlernen. Als nächstes fassen wir den Inhalt dieses Artikels zusammen.

Zusammenfassung

In diesem Artikel haben wir ausführlich erklärt, wie man mit der Requests-Bibliothek in Python Dateien hochladen kann, von den Grundlagen bis zu fortgeschrittenen Beispielen. Hier sind die wichtigsten Punkte zusammengefasst:

  • Installation der Requests-Bibliothek: Mit dem Befehl pip install requests kann sie einfach installiert werden.
  • Grundlegender Datei-Upload: Wir haben die grundlegende Methode zum Hochladen einer einzelnen Datei erlernt.
  • Upload von Multipart-Formulardaten: Wir haben gezeigt, wie man Dateien zusammen mit anderen Formulardaten senden kann.
  • Fehlerbehandlung: Wir haben erklärt, wie man mit Fehlern beim Datei-Upload umgeht.
  • Hochladen mehrerer Dateien: Wir haben gezeigt, wie man mehrere Dateien gleichzeitig hochladen kann.
  • Datei-Upload mit Authentifizierung: Wir haben erklärt, wie man Dateien hochlädt, wenn Authentifizierungsinformationen erforderlich sind.

Nutzen Sie dieses Wissen, um Ihre Fähigkeiten im Datei-Upload zu erweitern, und bearbeiten Sie die Übungsaufgaben, um ein tieferes Verständnis zu erlangen.

Inhaltsverzeichnis