Heim  >  Artikel  >  Backend-Entwicklung  >  Wie lade ich eine Datei von einer URL herunter, die in Python 3 als String gespeichert ist?

Wie lade ich eine Datei von einer URL herunter, die in Python 3 als String gespeichert ist?

Susan Sarandon
Susan SarandonOriginal
2024-11-04 06:48:01174Durchsuche

How to Download a File from a URL Stored as a String in Python 3?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn