Seite 1 von 1

with-Anweisung

Verfasst: Donnerstag 14. Oktober 2010, 13:54
von ratna_fong
Hallo zusammen,

ich möchte hiermit fragen, was die with-Anweisung genau macht. Unter meinem Python 2.5 kann ich diese Anweisung mit Hilfe des Moduls __future__ verwenden.

Wenn ich also sagen wir mal so etwas habe:

Code: Alles auswählen

with open(dateiobjekt.txt, "wb") as final:
Ich habe irgendwie so verstanden, dass man dann zu diesem Dateiobjekt nicht mehr closen muss. Stimmt das? Ist das die einzige Verwendung zu bzgl. with-Anweisung?

Vielen Dank für Eure Hilfe.

Eure Ratna :D

Re: with-Anweisung

Verfasst: Donnerstag 14. Oktober 2010, 14:05
von BlackJack
@ratna_fong: Stimmt, das Dateiobjekt wird geschlossen wenn der Programmablauf den ``with``-Block verlässt.

Das ist nicht die einzige Verwendung. Man kann ``with`` mit jedem Objekt verwenden, welches sich wie ein "context manager" verhält, das heisst die entsprechenden `__enter__()`- und `__exit__()`-Methoden implementiert. Aus der Standardbibliothek tun das zum Beispiel auch `threading.Lock`\s.

In PEP343 wird der Mechanismus recht ausführlich beschrieben.

Re: with-Anweisung

Verfasst: Donnerstag 14. Oktober 2010, 14:17
von ratna_fong
Danke für die rasche Antwort BlackJack, die PEP343 werde ich mal in ganz Ruhe versuchen zu nachvollziehen. Eine andere Frage ganz nebenbei:

wofür braucht man eigentlich ein delimiter?

Code: Alles auswählen

csv.reader(datei.csv, delimiter=";")


was bewirkt der Parameter delimiter in dem Fall. Was wäre wenn ich ganz normal ohne delimiter den Reader erzeuge? Was wäre da der Unterschied?
Also:

Code: Alles auswählen

csv.reader(datei.csv)
Danke,

Eure Ratna

Re: with-Anweisung

Verfasst: Donnerstag 14. Oktober 2010, 14:45
von BlackJack
@ratna_fong: Schau Dir mal CSV-Dateien an, dann sollte es klar werden. Und/oder probiere es doch einfach mal aus.