Ich habe folgenden Code in einem Python-Skript
%Vor% Ich mache mir Sorgen, denn wenn ich auf sf.read()
einen Fehler erhalte, wird sf.clsoe()
nicht aufgerufen.
Ich habe versucht, sf.close()
in einen finally
Block zu setzen, aber wenn es eine Ausnahme auf urlopen()
gibt, dann gibt es keine Datei zum Schließen und ich stoße auf eine Ausnahme im finally
Block!
Also habe ich es versucht
%Vor%, aber dies führte zu einem ungültigen Syntaxfehler in der with...
-Zeile.
Wie kann ich am besten damit umgehen, ich fühle mich dumm!
Wie Kommentatoren darauf hingewiesen haben, verwende ich Pys60, das Python 2.5.4 ist
Sieht so aus, als ob das Problem tiefer läuft als ich dachte - dieser Forum-Thread zeigt an, dass urllib2 nicht funktioniert t implementieren with
bis nach Python 2.6 und möglicherweise nicht bis 3.1
Sie könnten Ihren eigenen generischen URL-Öffner erstellen:
%Vor%Dann könnten Sie dann Ihre Syntax von Ihrer ursprünglichen Frage verwenden:
%Vor%Diese Lösung bietet Ihnen eine saubere Trennung von Bedenken. Sie erhalten eine saubere generische URLopener-Syntax, die die Komplexität des ordnungsgemäßen Schließens der Ressource behandelt, unabhängig von Fehlern, die unter Ihrer Klausel with auftreten.
Tags und Links python exception-handling urllib2 pys60