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

Dateien aus dem Internet herunterladen

Beitragvon pot » Sonntag 2. März 2008, 18:15

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:

Re: Dateien aus dem Internet herunterladen

Beitragvon BlackVivi » Sonntag 2. März 2008, 18:51

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:

Beitragvon veers » Sonntag 2. März 2008, 18:53

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? ;)
My Website - 29a.ch
"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

Beitragvon pot » Sonntag 2. März 2008, 19:04

Danke, funktioniert wunderbar ;-)

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

Beitragvon EyDu » Sonntag 2. März 2008, 21:03

Code: Alles auswählen

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

Beitragvon gerold » Sonntag 2. März 2008, 21:20

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

Beitragvon pot » Dienstag 4. März 2008, 17:59

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

Beitragvon Trundle » Dienstag 4. März 2008, 18:06

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

Beitragvon pot » Dienstag 4. März 2008, 18:08

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

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]