So laden Sie eine Datei aus dem Web in Python 3 mit einer in einer Zeichenfolge gespeicherten URL herunter
Beim Versuch, eine Datei von einem herunterzuladen Auf einem Webserver in Python 3 kann die Übergabe einer Zeichenfolge als URL zu einem Fehler führen, der die Eingabe von Bytes erfordert. In diesem Artikel werden mehrere Methoden vorgestellt, um dieses Problem zu umgehen und die Datei erfolgreich abzurufen.
Verwendung von urllib.request.urlopen
Um den Inhalt einer Webseite abzurufen, verwenden Sie urllib .request.urlopen(). Diese Funktion gibt ein Antwortobjekt zurück, das dann in eine Variable eingelesen werden kann:
<code class="python">import urllib.request url = 'http://example.com/' response = urllib.request.urlopen(url) data = response.read() # a `bytes` object</code>
Verwenden von urlib.request.urlretrieve
Der einfachste Weg zum Herunterladen und Zum Speichern einer Datei wird die Funktion urllib.request.urlretrieve verwendet:
<code class="python">import urllib.request url = 'http://example.com/file.txt' urllib.request.urlretrieve(url, 'file.txt')</code>
Diese Methode lädt die Datei von der angegebenen URL herunter und speichert sie lokal als „file.txt“.
Verwenden von urlib.request.urlopen mit Shutil.copyfileobj
Für eine bessere Kontrolle über den Download-Prozess verwenden Sie urllib.request.urlopen(), um ein dateiähnliches Objekt zurückzugeben. Dieses Objekt kann dann mit Shutil.copyfileobj() in eine echte Datei kopiert werden:
<code class="python">import urllib.request import shutil url = 'http://example.com/file.zip' with urllib.request.urlopen(url) as response, open('file.zip', 'wb') as out_file: shutil.copyfileobj(response, out_file)</code>
Speichern des Downloads als Bytes
Wenn Geschwindigkeit Priorität hat, ist die Heruntergeladene Daten können direkt in einem Bytes-Objekt gespeichert und anschließend in eine Datei geschrieben werden, obwohl dies nur für kleine Dateien geeignet ist:
<code class="python">import urllib.request url = 'http://example.com/icon.png' with urllib.request.urlopen(url) as response, open('icon.png', 'wb') as out_file: data = response.read() # a `bytes` object out_file.write(data)</code>
Umgang mit komprimierten Dateien
urllib.request.urlopen() kann auch zur Verarbeitung komprimierter Dateien verwendet werden, sofern der Server Direktzugriff unterstützt:
<code class="python">import urllib.request import gzip url = 'http://example.com/archive.gz' with urllib.request.urlopen(url) as response: with gzip.GzipFile(fileobj=response) as uncompressed: file_header = uncompressed.read(64) # a `bytes` object</code>
Durch die Implementierung einer dieser Methoden können Entwickler in Python 3 erfolgreich Dateien aus dem Web herunterladen , auch wenn die URL als Zeichenfolge gespeichert ist.
Das obige ist der detaillierte Inhalt vonWie lade ich eine Datei von einer URL herunter, die in Python 3 als String gespeichert ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!