2016-06-23 17 views
1

Ist es möglich, die Python "with"-Anweisung mit der Ogr.open (Datei) -Funktion zu verwenden?Verwenden Sie Python "with" -Anweisung für Ogr.open (Datei)

Zum Beispiel würde Ich mag, wie etwas zu tun ist:

with ogr.open(file) as ds: 

Im Moment kann ich nur die Arbeit folgende erhalten:

try: 
    ds = ogr.open(file) 
    ... 

except: 
    del ds 
+0

Was erwarten Sie mit 'mit'? Rufen Sie 'ds.close()' am Ende auf? – SuperSaiyan

+0

Das ds (DataSource) -Objekt hat kein close() -Attribut. Ohne eine try-finally-Kombination (oder try-except) zu verwenden, finde ich, dass mein Interpreter eine Sperre für die geöffnete ds (DataSource) hält, selbst wenn ich die "del ds" im Skript habe. –

Antwort

2

Gemäß der Dokumentation scheint es, dass Sie können nicht verwenden with ogr.Open(file) ...

Ein Python-Objekt, das Sie in einer with-Anweisung verwenden müssen Methoden __enter__ und __exit__ zum Einrichten und Entfernen eines Kontextes innerhalb des with Blocks. Here's an explanation.

Nach den Documentation for OGR Open diese __enter__ und __exit__ Methoden sind nicht für das Datasource-Objekt zurückgegeben, definiert durch Open so können Sie nicht das Ergebnis von ogr.Open als Gegenstand einer with Anweisung verwenden.

So sieht es aus wie Sie Ihre try/except Kombination verwenden müssen werden (obwohl eine try/finally Kombination besser sein könnte).

+0

Danke, deine Erklärung hilft mir zu verstehen, warum ich es nicht benutzen kann. Dies würde dazu beitragen, zu verhindern, dass Software Sperren für Dateien behält, nachdem ein Skript ausgeführt wurde. –