open("blub").readlines() danach nochmal schließen?

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
Bitzkit
User
Beiträge: 14
Registriert: Mittwoch 21. Januar 2009, 08:16

Donnerstag 25. März 2010, 14:57

Hi,

muss ich eine Datei -wenn ich diese mit

Code: Alles auswählen

data = open("blub").readlines()
auslese- wieder schließen ?

Bzw. ich kann sie ja dann nicht mehr schließen, weil ich das File Objekt nicht mehr habe.

oder sollte ich dann besser

Code: Alles auswählen

with open('blub') as data_file:
    data = data_file.readlines()
schreiben ?

Die Frage ist mir gekommen, weil ich meist die erste Variante benutze (Faulheit und so :oops: )

Danke
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Donnerstag 25. März 2010, 15:13

Eine Datei sollte immer geschlossen werden!
Also 2. benutzen (with-Statement)
the more they change the more they stay the same
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Donnerstag 25. März 2010, 15:19

Und dann stellt sich dich Frage, ob du wirklich die gesamten Daten in einer Liste benoetigst, oder du einfach nur sequenziell die Zeilen abarbeiten willst.

Dann kannst du auch ueber das Datei-Objekt iterieren.
Bitzkit
User
Beiträge: 14
Registriert: Mittwoch 21. Januar 2009, 08:16

Donnerstag 25. März 2010, 15:28

Dav1d hat geschrieben:Eine Datei sollte immer geschlossen werden!
Also 2. benutzen (with-Statement)
Ok, danke. Hatte das mal irgendwo in dem ein oder anderen Code gesehen und dachte da steckt etwas Magie hinter und die Datei wird automatisch geschlossen :oops:
wobei in Python ja normal nicht sein sollte. Keine Ahnung was ich mir da gedacht habe.

:arrow: ab jetzt wird sie immer explizit geschlossen
cofi hat geschrieben:Und dann stellt sich dich Frage, ob du wirklich die gesamten Daten in einer Liste benoetigst, oder du einfach nur sequenziell die Zeilen abarbeiten willst.

Dann kannst du auch ueber das Datei-Objekt iterieren.
Jo das ist klar, in den Fällen benutze ich auch das with-statement. Ging jetzt nur darum, wenn ich die gesamte Datei als liste brauche.

Vielen Dank euch beiden.
DasIch
User
Beiträge: 2479
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Donnerstag 25. März 2010, 15:33

Die Datei wird i.d.R. geschlossen wenn der GC dass Datei Objekt aufräumt. Dass kann allerdings irgendwann oder nie passieren.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Donnerstag 25. März 2010, 15:34

Wenn die Datei zu groß ist gibts eine Exception von wegen OverflowError
the more they change the more they stay the same
Antworten