Dateien aus dem Internet herunterladen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pot
User
Beiträge: 55
Registriert: Sonntag 4. März 2007, 00:57
Wohnort: Frauenfeld, CH

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
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Hm... mit urlopen öffnen und zeilenweise bzw. 100 bytes oder sowas lesen und dann schreiben in'r Schleife ._. Würde mir spontan einfallen.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

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? ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
pot
User
Beiträge: 55
Registriert: Sonntag 4. März 2007, 00:57
Wohnort: Frauenfeld, CH

Danke, funktioniert wunderbar ;-)

Grüsse
Pot
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Code: Alles auswählen

import urllib
urllib.urlretrieve(url, filename)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo!

Und ich möchte noch ``urllib.urlretrieve`` einwerfen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
pot
User
Beiträge: 55
Registriert: Sonntag 4. März 2007, 00:57
Wohnort: Frauenfeld, CH

Ist ja noch kürzer, danke.
Ist es mit urllib.urlretrieve möglich, einen "Ladebalken" zu erstellen?

Grüsse
Pot
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

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.
pot
User
Beiträge: 55
Registriert: Sonntag 4. März 2007, 00:57
Wohnort: Frauenfeld, CH

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
Antworten