Ich bin neu in Python und habe die Fragen und Antworten auf dieser Website durchgesehen, um eine Antwort auf meine Frage zu erhalten. Ich bin jedoch ein Anfänger und finde es schwierig, einige der Lösungen zu verstehen. Ich brauche eine sehr einfache Lösung.
Könnte mir bitte jemand eine einfache Lösung für das Herunterladen einer Datei über http und das Speichern auf einer Festplatte unter Windows erklären?
Ich bin mir auch nicht sicher, wie ich Shutil- und OS-Module verwenden soll.
Die Datei, die ich herunterladen möchte, hat eine Größe von weniger als 500 MB und ist eine .gz-Archivdatei. Wenn jemand erklären kann, wie das Archiv extrahiert und die darin enthaltenen Dateien auch verwendet werden, wäre das großartig!
Hier ist eine Teillösung, die ich aus verschiedenen Antworten zusammen geschrieben habe:
import requests
import os
import shutil
global dump
def download_file():
global dump
url = "http://randomsite.com/file.gz"
file = requests.get(url, stream=True)
dump = file.raw
def save_file():
global dump
location = os.path.abspath("D:\folder\file.gz")
with open("file.gz", 'wb') as location:
shutil.copyfileobj(dump, location)
del dump
Könnte jemand auf Fehler hinweisen (Anfängerlevel) und einfachere Methoden erklären, um dies zu tun?
Vielen Dank!
testfile.retrieve("http://example.com/example.rpm", "/tmp/test.rpm")
.Wie hier erwähnt :
EDIT:
Wenn Sie immer noch Anfragen verwenden möchten, werfen Sie einen Blick auf diese Frage oder dieser ein .quelle
requests
ist im Vergleich zururllib
Arbeit mit einer REST-API äußerst hilfreich . Wenn Sie nicht viel mehr tun möchten, sollte dies gut sein.import urllib.request
urllib.request.urlretrieve(url, filename)
Ich benutze wget .
Einfache und gute Bibliothek, wenn Sie ein Beispiel geben möchten?
Das Wget-Modul unterstützt die Versionen Python 2 und Python 3
quelle
Vier Methoden mit wget, urllib und request.
testRequest - 4469882 Funktionsaufrufe (4469842 primitive Aufrufe) in 20,236 Sekunden
testRequest2 - 8580 Funktionsaufrufe (8574 primitive Aufrufe) in 0,072 Sekunden
testUrllib - 3810 Funktionsaufrufe (3775 primitive Aufrufe) in 0,036 Sekunden
testwget - 3489 Funktionsaufrufe in 0,020 Sekunden
quelle
Für Python3 +
URLopener
ist veraltet. Und wenn verwendet, erhalten Sie Fehler wie folgt:Also versuche:
quelle
Exotische Windows-Lösung
quelle
Ich habe diesen Weg eingeschlagen, weil ESXis Wget nicht mit SSL kompiliert ist und ich eine OVA von der Website eines Anbieters direkt auf den ESXi-Host herunterladen wollte, der sich auf der anderen Seite der Welt befindet.
Ich musste die Firewall deaktivieren (faul) / https out aktivieren, indem ich die Regeln bearbeitete (richtig)
hat das Python-Skript erstellt:
ESXi-Bibliotheken sind irgendwie gepaart, aber das Open-Source-Wiesel-Installationsprogramm schien urllib für https zu verwenden ... also hat es mich dazu inspiriert, diesen Weg zu gehen
quelle
Eine andere saubere Möglichkeit, die Datei zu speichern, ist folgende:
quelle
urllib.urlretrieve
oderurllib.URLopener().retrieve
unklar sein, was Sie hier gemeint haben.