[Python-de] Python3.3 - Unittest - Warnung

Stefan stefan at schweter.it
Di Nov 12 11:36:16 CET 2013


> 
> Per Default sind die `ResourceWarning`s beim Starten von
> `python3` nicht aktiv, aber sie können von Test-Frameworks
> aktiviert werden. Das ist das, was du siehst.
> 

Hallo Stefan,

danke für den Hinweis! Ich habe mir die entsprechende Python Dokuseite über Warnungen angesehen, da wurde das erwähnt.

> 
> Die idiomatische und zuverlässigere Variante ist
> 
>  with open(temp_test.txt) as f:
>      content = f.read()
> 
> Am Ende der `with`-Anweisung (Ausrückung) wird die Datei -
> auch bei einer Exception beim Lesen - geschlossen.
> 
> Die `ResourceWarning` bekommst du übrigens, weil es von der
> Python-Implementierung abhängt, wann die Datei geschlossen
> wird, wenn du es nicht explizit tust. Das heißt, du solltest
> dich _nicht_ darauf verlassen, dass eine Datei geschlossen
> wird, sobald du die Funktion/Methode verlässt.
> 

Danke für die Erklärungen! Ich hab das jetzt überall in meinem Code verwendet.

Ich habe allerdings noch eine Frage zu diesen ResourceWarnings - diesmal aber im Zusammenhang mit NLTK:

from nltk.corpus import brown

counter = 0

for word in brown.words():
	counter += 1

print(counter)


Wenn ich das mit python3.3 -Wd starte, kommt wieder diese "ResourceWarning: unclosed file" Warnung.

Als "Workaround" um die Meldung wegzubekommen, verwende ich aktuell das hier:

brown_words = brown.words()


Geht das noch eleganter?


Danke schonmal und schöne Grüße,


Stefan


Mehr Informationen über die Mailingliste python-de