Hier nochmal eine Anmerkung zum Problem welches ich hier: Python URLDownloadToFile thematisiert habe:

Man kann das erste Beispiel kürzer schreiben. Der Vorteil hiervon ist, das man keine externe Bibliotheken einbinden muss.

Also hier nochmal eine knappe Variante, wie man den Inhalt einer Internetseite in eine Datei schreiben kann:

import urllib.request

with open(r"c:\temp\bla", "wb") as f:
    f.write(urllib.request.urlopen("http://www.google.de").read())

Im Wesentlichen ist das wie gessagt der gleiche Code wie im ersten Beispiel. Ich habe lediglich das "read()" an den "request" angehangen.
Anschließend habe ich den Code in das "f.write" verschachtelt.

Für den Anfänger in der Programmierung sei noch gesagt:
Die meisten modernen Sprachen besitzen so ein Construct wie hier in Python "with". Es dient dazu einen Befehl welcher auf eine Ressource zugreift (hier eine Datei) in einen Block einzufassen. Der Vorteil hiervon ist, das der Block, dann automatisch die Ressource schließt bzw freigibt, und man sozusagen das "f.close()" nicht vergisst. 

Intern werden die speziellen Methoden "__enter__()" und "__exit__() aufgerufen. Das "__enter__()", im Falle einer Datei, wird nun nicht viel machen (die Funktionalität ist ja schon vorhanden). Beim aufrufen von "__exit__()" wird dann ein "self.close()" aufgerufen. Das "Exit" läuft beim verlassen des "With" Blocks.

Wenn Ihr also eine Klasse "Ressourcentauglich" machen wollt, müsst Ihr also nur die beiden Spezialfunktionen hinzufügen.


Keine Kommentare

Kommentar hinterlassen

Als Antwort auf Some User