Seite 1 von 1
Dateien aus dem Internet herunterladen
Verfasst: Sonntag 2. März 2008, 18:15
von pot
Hallo
Ich möchte mit Python eine Datei aus dem Internet laden. Mit urllib2 würde das auch schön gehen, leider muss ich da erst die ganze Datei (mehrere MB gross) in eine Variable speichern und erst dann auf das Dateisystem abspeichern.
Code: Alles auswählen
from urllib2 import urlopen
content = urlopen(url).read()
file = open(filename, 'w')
file.write(content)
file.close()
Diese Art finde ich allerdings sehr unschön (Speicher des Programms erhöht sich)
Gibts da Alternativen?
Grüsse
Pot
Re: Dateien aus dem Internet herunterladen
Verfasst: Sonntag 2. März 2008, 18:51
von BlackVivi
Hm... mit urlopen öffnen und zeilenweise bzw. 100 bytes oder sowas lesen und dann schreiben in'r Schleife ._. Würde mir spontan einfallen.
Verfasst: Sonntag 2. März 2008, 18:53
von veers
Code: Alles auswählen
import shutil
import urllib2
source = urllib2.urlopen(url)
destination = open(filename, 'w')
shutil.copyfileobj(source, destination)
source.close()
destination.close()
So?
Verfasst: Sonntag 2. März 2008, 19:04
von pot
Danke, funktioniert wunderbar
Grüsse
Pot
Verfasst: Sonntag 2. März 2008, 21:03
von EyDu
Verfasst: Sonntag 2. März 2008, 21:20
von gerold
Hallo!
Und ich möchte noch ``urllib.urlretrieve`` einwerfen.
mfg
Gerold
Verfasst: Dienstag 4. März 2008, 17:59
von pot
Ist ja noch kürzer, danke.
Ist es mit urllib.urlretrieve möglich, einen "Ladebalken" zu erstellen?
Grüsse
Pot
Verfasst: Dienstag 4. März 2008, 18:06
von Trundle
pot hat geschrieben:Ist es mit urllib.urlretrieve möglich, einen "Ladebalken" zu erstellen
Ja, man kann als drittes Argument eine Funktion übergeben, die dann aufgerufen wird, wenn ein Daten-Block gelesen wurde. Mehr dazu steht in der
Dokumentation.
Verfasst: Dienstag 4. März 2008, 18:08
von pot
Trundle hat geschrieben:pot hat geschrieben:Ist es mit urllib.urlretrieve möglich, einen "Ladebalken" zu erstellen
Ja, man kann als drittes Argument eine Funktion übergeben, die dann aufgerufen wird, wenn ein Daten-Block gelesen wurde. Mehr dazu steht in der
Dokumentation.
Danke dir.
Gruss
Pot