Heim > Artikel > Backend-Entwicklung > Wie lade ich in Python 3 Dateien aus dem Web herunter?
Beim Erstellen von Programmen, die mit dem Internet interagieren, ist es oft notwendig, Dateien herunterzuladen von einem Webserver. In Python 3 gibt es mehrere Möglichkeiten, diese Aufgabe zu erfüllen.
Der ursprünglich bereitgestellte Code stößt auf einen Fehler, da die Funktion einen Bytetyp für das URL-Argument erwartet, der jedoch extrahiert wird Die URL aus der JAD-Datei ist eine Zeichenfolge. Um eine Datei herunterzuladen, wenn die URL als Zeichenfolge gespeichert ist, konvertieren Sie sie mithilfe der UTF-8-Kodierung in einen Bytetyp:
<code class="python">import urllib.request def downloadFile(URL=None): h = urllib.request.urlopen(URL.encode('utf-8')) return h.read() downloadFile(URL_from_file)</code>
Es gibt mehrere alternative Methoden dazu Dateien aus dem Internet herunterladen:
urllib.request.urlopen: Erhalten Sie den Inhalt einer Webseite, indem Sie die Antwort von urlopen lesen:
<code class="python">response = urllib.request.urlopen(URL) data = response.read() # a `bytes` object text = data.decode('utf-8') # a `str`</code>
urllib.request.urlretrieve: Laden Sie eine Datei herunter und speichern Sie sie lokal:
<code class="python">urllib.request.urlretrieve(URL, file_name)</code>
urllib.request. urlopen Shutil.copyfileobj: Bieten Sie einen sehr empfehlenswerten und korrektesten Ansatz zum Herunterladen von Dateien an:
<code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file: shutil.copyfileobj(response, out_file)</code>
urllib.request.urlopen write to bytes object: Einfachere Option, aber nur für kleine Dateien empfohlen:
<code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file: data = response.read() # a `bytes` object out_file.write(data)</code>
Schließlich ist auch die Extraktion komprimierter Daten im laufenden Betrieb möglich möglich:
<code class="python">url = 'http://example.com/something.gz' with urllib.request.urlopen(url) as response: with gzip.GzipFile(fileobj=response) as uncompressed: file_header = uncompressed.read(64) # a `bytes` object</code>
Das obige ist der detaillierte Inhalt vonWie lade ich in Python 3 Dateien aus dem Web herunter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!