with-Anweisung

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.
Antworten
ratna_fong
User
Beiträge: 38
Registriert: Samstag 3. Juli 2010, 10:43

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
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.
ratna_fong
User
Beiträge: 38
Registriert: Samstag 3. Juli 2010, 10:43

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
BlackJack

@ratna_fong: Schau Dir mal CSV-Dateien an, dann sollte es klar werden. Und/oder probiere es doch einfach mal aus.
Antworten